jQuery的片段:jQuery的 - 多個事件來觸發相同的功能,但不同的元素
function main_call(){
jQuery("#user_registration").on('submit',function(event) {
load_product_serial();
});
jQuery("#reg_submit").on('blur',function(event) {
load_product_serial();
});
}
function load_product_serial(){
var result = [];
var prod_serial = jQuery('#reg-product-serial').val(); //fetch input value
jQuery.ajax({
type: "GET",
url: ajaxurl,
async: false,
dataType : "JSON",
contentType: 'application/json; charset=utf-8',
data : {action: "get_product_serial"},
//cache: false,
success: function(data){
result = data;
if(jQuery.inArray(prod_serial, result) < 0){
jQuery("#invalid_dialog").dialog({
width: 350,
modal: true,
resizable: false,
dialogClass: 'no-close success-dialog',
buttons: {
Ok: function() {
jQuery(this).dialog("close");
}
}
});
jQuery("button.ui-dialog-titlebar-close").hide();//hide close button
event.preventDefault();
return false;
}else{
alert('Success');
//jQuery("#valid_dialog").dialog();
return true;
}
},
error: function() {
alert('Unexpected error occured. Please try again.');
}
});
//});
}
在這裏,我需要在用戶點擊提交按鈕事件(reg-product-serial
),或調用函數時,用戶改變輸入值onblur事件(reg-product-serial
)
我可以使用.on()
綁定到多個事件,但這裏的元素不相同。
$('#element').on('keyup keypress blur change', function() {
...
});
此作爲我不使用一個共同的元件,而且對於相同的功能兩種不同元素不是duplicate。
爲什麼甚至不簡單'$('#element')。on('submit',load_product_serial);'? – Satpal
@Slimshadddyyy,亞當是正確的。如果您正在註冊您在模糊處理程序中單擊處理程序,那麼同樣的點擊處理程序會一次又一次地註冊,每次模糊事件觸發時,您的點擊處理程序都會多次調用。就像他說的那樣,將點擊處理程序部分移到模糊處理程序之外,並確保您只做一次:) – Arkantos
Adam:請參閱我的更新問題。這兩個事件都會調用函數,但如果用戶提交表單,則表示「事件未定義」。如果輸入值無效,我會阻止表單提交 – Slimshadddyyy