Javascript 将多个事件添加到同一函数会导致超过最大堆栈大小
我试图允许使用可编辑表的用户通过按enter键提交更改,同时关注元素。这个按键很好用。但是,focusout导致超过最大堆栈大小。我尝试了event.stopPropagation()来停止连续事件,但我无法找出我做错了什么。以下是我所拥有的:Javascript 将多个事件添加到同一函数会导致超过最大堆栈大小,javascript,jquery,Javascript,Jquery,我试图允许使用可编辑表的用户通过按enter键提交更改,同时关注元素。这个按键很好用。但是,focusout导致超过最大堆栈大小。我尝试了event.stopPropagation()来停止连续事件,但我无法找出我做错了什么。以下是我所拥有的: $(document).on('keypress focusout', '.prefill1', function(event) { var keycode = (event.keyCode ? event.keyCode : event.whi
$(document).on('keypress focusout', '.prefill1', function(event)
{
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode == '13' || event.type == 'focusout')
{
event.preventDefault();
if($(this).attr('edit_type') == 'button')
{
return false;
}
//get the original entry
var original_entry = $(this).attr('original_entry');
var row_id = $(this).closest('tr').attr('row_id');
var row_div = $(this)
.removeClass('bg-warning') //add bg css
.css('padding','')
var col_name = row_div.attr('col_name');
var col_val = row_div.html();
var arr = {};
//get the col name and value
arr[col_name] = col_val;
//get row id value
arr['row_id'] = row_id;
if(original_entry != col_val)
{
$(this).blur();
var name = col_val;
var finder = $(this).closest('tr');
var col_val2 = col_val.toUpperCase();
$.ajax({
method: "POST",
url: "page.php",
success: success,
dataType: "json",
data: { row_id: row_id, }
})
.done(function( msg ) {
});
function success(data) {
useData(data, name, finder);
var flen = data.length;
console.log(flen);
}
}
}
});
在调用
blur()
之前,您可能需要检查事件类型是否为'focusout'
。这可能会导致另一个focusout
事件
/** ... **/
if(original_entry != col_val) {
if(event.type != 'focusout')
$(this).blur();
}
/** ... **/
我在发布的代码中没有看到与
单击相关的内容…我是说focusout。这是一个打字错误。哇,这正是我需要的。非常感谢你!