$.extend($.fn.validatebox.methods, {
remove : function(jq, param) {
//console.error("ddd",$.data(jq[0], 'combo').combo);
var f = param ? param : false;
if (f) {
//動態combo
var v = $.data(jq[0], 'combo').combo.find('input.combo-text')[0];
var opts = $.data(jq[0], 'combo').options;
delete (opts.validType);
//主體面板
var panel = $.data(jq[0], 'combo').panel.find('div.combobox-item');
//console.error("items",panel.length);
//找到下拉箭頭
var arrow = $.data(jq[0], 'combo').combo.find('.combo-arrow');
//刪除所有的監聽
arrow.unbind('.validatebox');
} else {
var v = jq[0];
}
if ($.data(v, 'validatebox')) {
//console.error("ddd11111",$.data(v,'validatebox').options);
var tip = $.data(v, 'validatebox').tip;
if (tip) {
tip.remove();
}
$(v).removeClass('validatebox-invalid');
$(v).removeClass('validatebox-text');
$(v).unbind('.validatebox');
$(v).die('focus');
$(v).removeData('validatebox');
}
}
});
在分析eayui的validatebox的源代碼中發現,該驗證框架不支持刪除驗證的方法,在api中可以看見有個destroy方法,這個方法不是用來刪除驗證的,而是把元素和驗證都一塊刪除,所以不符合邏輯。
如果刪除的是普通的即非combo的使用此方法:
- $("#addValidate2").validatebox('remove');
如果刪除的是combo的極其子對象的使用此方法
- $("#addValidate2").validatebox('remove',true);