3

我想问的是,我有一个名为全屏的复选框,当我检查它时,应禁用宽度和高度两个输入字段,并将其值设置为空。我用 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 ,但是当提交表单时它不会保留它

4

2 回答 2

11

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

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

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

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

之后,当您处理提交时,您只需忽略常规输入值并仅使用隐藏项。

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

于 2013-07-22T12:32:49.087 回答
0

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

于 2013-07-22T12:21:08.840 回答