我想检查网址是否已输入到textarea中。这是一个检查textarea的函数:
$('#text textarea').on('input paste', function() {
checkUrl($(this));
});
只允许一个URL,因此找到URL处理程序后使用off解除绑定:
function checkUrl(elem) {
var words = elem.val().split(/\s+/);
$.each(words, function(index, element) {
if (isValidURL($.trim(element))) {
$.ajax({...}); // Ajax call
elem.off('input paste');
return;
}
});
}
函数checkUrl在粘贴URL(CTRT + V)后不仅被调用一次而且被调用两次。 Ajax也被触发了两次。
提前多多感谢。
修改
我已根据this更改了我的代码:
$('#text textarea').bind('paste', function() {
var _this = $(this);
setTimeout( function() {
checkUrl(_this);
}, 100);
});
它现在只使用粘贴处理程序,但主要问题仍然存在......
答案 0 :(得分:1)
获取事件对象并检查事件类型'input',因此如果它是粘贴事件,它将触发输入事件
你可以试试这个
$('#text textarea').on('input paste',function(event){
if(event.type=='input'){
checkUrl($(this));
}
});
答案 1 :(得分:0)
我想我已经解决了这个问题。在绑定事件之前,我从元素中取消了所有内容。
$('#text textarea').unbind();
$('#text textarea').bind('paste', function() {
var _this = $(this);
setTimeout( function() {
checkUrl(_this);
}, 100);
})