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

时间:2013-07-22 12:15:13

标签: jquery input field 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);
        }
    });

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

2 个答案:

答案 0 :(得分:11)

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

$("#yourFormId").submit(function(){
    $("#YourInputId").prop('disabled', 'false');
});

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

$("#yourInputId").change(function(){
    $("#hiddenInputId").val($(this).val()));
});

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

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

答案 1 :(得分:0)

我认为问题的根源是来自禁用输入字段的值未发布到服务器。 您可以从服务器端执行的操作是检查值是否已过帐,如果未将值设置为0。