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