2

我想检查 URL 是否已输入到 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;
    }
});

}

粘贴 URL (CTRT+V) 后,函数 checkUrl 不仅被调用一次,而且被调用两次。Ajax 也被触发了两次。

提前非常感谢。

编辑

我已经根据这个更改了我的代码:

$('#text textarea').bind('paste', function() {
        var _this = $(this);
        setTimeout( function() {
            checkUrl(_this);
        }, 100);
    });

它现在只使用粘贴处理程序,但主要问题仍然存在......

4

2 回答 2

1

获取事件对象并检查事件类型“输入”,因此如果它是粘贴事件,它将触发输入事件

你可以试试这个

$('#text textarea').on('input paste',function(event){


    if(event.type=='input'){
       checkUrl($(this));
    }
 });​

演示:http: //jsfiddle.net/nLPrG/

于 2012-10-23T09:34:09.190 回答
0

我想我已经解决了这个问题。在绑定事件之前,我已经解除了元素中的所有内容。

$('#text textarea').unbind();   
$('#text textarea').bind('paste', function() {
        var _this = $(this);
        setTimeout( function() {
            checkUrl(_this);
    }, 100);
})
于 2012-10-26T07:27:42.653 回答