jquery属性已禁用,输入值表单已提交

can*_*int 3 jquery field input prop

我想问的是,我有一个名为全屏的复选框,当我检查它时,应禁用宽度和高度这两个输入字段,并将其值设置为null.我使用j查询做得很好,但是当我提交全屏检查表格时,即使两个输入字段值为0,也会保存该两个输入字段的先前值.

有帮助吗?

$("#fullscreenCheckBox").on("change", function() {
        if($(this).prop("checked")) {
            $("#height").prop("disabled", true);
            $("#height").val("");
            $("#width").prop("disabled", true); 
            $("#width").val("");

        } else {
            $("#height").prop("disabled", false);
            $("#height").prop("disabled", false);
        }
    });
Run Code Online (Sandbox Code Playgroud)

这些值设置为null,但是当提交表单时,它不会保留它

Kam*_*l T 11

如果输入disabled='true'在表单提交时具有该属性,则其值不会与表单一起提交.您可以尝试在jQuery中提交表单时重新启用它,例如:

$("#yourFormId").submit(function(){
    $("#YourInputId").prop('disabled', 'false');
});
Run Code Online (Sandbox Code Playgroud)

另一种方法是为每个"可见"输入使用许多额外的隐藏字段,比如<input id='hiddenInputId' type='hidden' > 在jQuery中设置其值.用户不会看到它们,但它们的值仍将通过表单提交发送.例:

$("#yourInputId").change(function(){
    $("#hiddenInputId").val($(this).val()));
});
Run Code Online (Sandbox Code Playgroud)

之后,当您处理提交时,您只需忽略常规输入值,并仅使用hiddens.

就个人而言,我认为第二种选择(隐藏输入)要好得多.你甚至可以扩展它,而不是在change()中硬键入你的DOM元素id,你可以为每个元素添加一个数据属性,然后一举杀死所有的鸟:)