2013-07-22 52 views
3

我想問的是,我有一個名爲全屏的複選框,當我檢查它時,應該禁用寬度和高度這兩個輸入字段,並將其值設置爲null 。我用j查詢做得很好,但是當我用全屏檢查提交表單時,即使兩個輸入字段的值都是0,它也會保存這兩個輸入字段的以前的值。jquery屬性禁用和輸入值表單提交

任何幫助?

$("#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

向我們展示一些html和你的jQuery的。 –

+0

用代碼示例提問。 –

+0

@KamilT代碼現在有 – canpoint

回答

11

如果輸入在表單提交時具有disabled='true'屬性,則值爲isn' t提交表格。您可以嘗試在形式的時刻重新啓用提交jQuery中,如:

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

另一種方法是使用許多額外的隱藏字段爲每一個「看得見」的輸入,像<input id='hiddenInputId' type='hidden' >並設置thier值在jQuery中。他們不會被用戶看到,但他們的價值仍然會通過表單提交發送。例如:

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

之後,當您處理提交時,您只是忽略常規輸入值,只能使用隱藏。

就我個人而言,我認爲第二個選項(隱藏輸入)要好得多。你甚至可以擴展它,而不是在change()中硬編碼你的DOM元素id,你可以添加一個數據屬性到每個元素,然後用一塊石頭殺死所有的鳥類:)

+0

我知道我可以發送隱藏的字段感謝,但沒有辦法提交它沒有隱藏。我沒有使用ajax表單提交,所以無法在提交期間重新啓用它 – canpoint

+0

您可以啓用它,只需查看此答案中的第一個示例代碼即可。此代碼在表單被引用時會觸發該函數。它重新啓用輸入,然後提交過程正在進行;) –

+0

nope @KamilT,它仍然提交舊值,即使我在提交 – canpoint

0

我認爲,問題的根源是,從禁用輸入字段中的值不會發布到服務器。 您可以從服務器端執行的操作是檢查值是否已過帳,如果未將值設置爲0.

+0

當我刪除禁用jQuery代碼時,它發佈得非常好:) – canpoint

+0

是的,因爲disabled屬性阻止發佈這些值。 – nubinub

+0

所以你的意思是它可以防止發佈輸入字段的新val或?因爲它發佈的舊值正在改變 – canpoint