2010-06-17 67 views
2

我正在使用Jquery驗證插件來驗證和提交表單。Jquery驗證 - 使用submitHandler去除表單數據

我希望能夠在表單數據被髮布到服務器之前從表單數據中刪除不必要的表單字段值。

我盤算了一下,submitHandler將是這個最好的地方 - 這裏是我的代碼示例:

submitHandler: function(form) { 
if (form.elements["billddress2"].value == "Suite/Apt"){ 
delete form.elements["billddress2"];  
} 

if (form.elements["mobile"].value == "Mobile Number"){ 
delete form.elements["mobile"]; 
} 

if (form.elements["questionid_46"].value == "Guest Email"){ 
delete form.elements["questionid_46"]; 
} 

form.submit(); 
} 

的問題是,該數據仍然得到通過。我知道我有正確的屬性,因爲我使用form.elements [「name」] .value來測試它們。

任何人都知道我爲什麼不能刪除HTMLFormElement對象的屬性?

回答

2

問題是delete是爲了從對象中移除屬性,而您試圖從DOM中移除元素。在你的回調函數中,form是一個DOM元素,所以你不能刪除它的子項。你可以嘗試在表單元素使用remove(你必須把它們變成jQuery的對象與$第一),像這樣:

submitHandler: function(form) { 
    var form = $(form); 

    if (form.elements["billddress2"].value == "Suite/Apt"){ 
    $('input[name="billddress2"]', form).remove(); 
    } 

    if (form.elements["mobile"].value == "Mobile Number"){ 
    $('input[name="mobile"]', form).remove(); 
    } 

    if (form.elements["questionid_46"].value == "Guest Email"){ 
    $('input[name="questionid_46"]', form).remove(); 
    } 

    form.submit(); 
}