2011-08-03 49 views
0

我有一個表單(用於編輯現有信息),其提交是通過jQuery的$ .post()在ajax中完成的。在提交之前,jQuery驗證會啓動以確保所更改的值是有效的,並在每個有效值旁邊生成一個複選標記。jQuery驗證:提交表單(ajax提交)後如何取消選中標記?

我的問題是,提交後複選標記不會消失。我嘗試了驗證器方法resetForm(),它取下了複選標記,但具有將所有更改的輸入恢復爲舊值的不良副作用。

有沒有辦法只刪除複選標記?

有沒有辦法更新由resetForm()記憶的原始值?如果是這樣,那麼我可以使用resetForm()來達到我的目的,而不會產生不良的副作用。

請幫忙。謝謝你們。

澄清:當我說「複選標記」時,它與複選框不一樣。事實上,我的問題與複選框無關。要查看我所指的複選標記,請轉至here並在某個文本輸入中輸入一些有效的字符串。

+0

郵政編碼。什麼檢查標記? – Andrew

回答

3

demo you linked to那些「對號」是結果掉CSS樣式,「檢查」之類的後加入到<label><td class="status">,當相關的輸入被認爲是有效的範圍內。一個類被添加到標籤,這給它一個複選標記背景。

無論如何,爲了在表單提交時觸發某些行爲,請使用submitHandler。例如:

$('form').validate({ 
    // Your config here... 
    submitHandler: function() { 
     $('label').removeClass('checked'); 
    } 
}); 

這一切都在定製該演示,所以你必須做設置和選項是什麼在起作用。

0

是的,就像輸入文本字段有element.defaultValue,複選框有checkboxObject.defaultChecked這是一個布爾值,可以很容易地使用attr()函數與JQuery一起使用。該prop()功能建議,如「檢查」,「已禁用」,「選擇」等特性,但你

$('#mybox').prop('checked'); 

查看包裝盒上你可能寧願使用類似形式復位功能

$(':checkbox').each(function(){ 
    $(this).attr('checked',$(this).defaultChecked); 
}); 

http://www.w3schools.com/jsref/prop_checkbox_defaultchecked.asp

1

您可以通過jQuery的做到這一點。

$('input[type="checkbox"]:checked').removeAttr('checked') 

啊,我可能誤解了你的問題。只需找到這些複選標記的課程,並將它們設置爲display:nonevisibility:hidden即可。

+0

如果某些複選框應該默認選中,該怎麼辦? – AlienWebguy

+0

他提到刪除所有複選標記,但我想我指的是錯誤的複選標記,而不是複選框上的複選標記。 – ace

+0

您可以添加其他屬性,例如'默認'來標識默認選中的複選框。然後將它們從選擇器中篩選出來 '$('input [type =「checkbox」]:checked:not([default])')。removeAttr('checked')' – ace

1

一個選項是在驗證之後但在提交之前提交併重新填充之後獲取表單值。

var backup = $('#form-id').serializeArray(); 
$('#form-id').resetForm(); 

// 
// submit logic 
// 

$.each(backup, function(key, value) { 
    $('[name="' + key + '"]').val(value); 
});