当检测到某个条件/事件时执行 jQuery


execute onChange when a certain condition/event is detected jQuery

>好吧.. 我有一个输入框,可以捕获paste事件并检查粘贴的文本/字符串是否是 YouTube URL。 如果是,它会将数据转发到某个PHP进行处理。

结果 JSON 数据显示在此处$('.printdata').append(response);

关注:

  1. 我在代码中没有的是识别整个文本或YouTube链接被删除/剪切/删除。它还应该删除显示的数据。

  2. 接受第一个 youtube URL,如果找到多个 YouTube URL,将第一个链接发送到 PHP,然后忽略其他链接,只需将其显示为文本即可。

我的解决方法

  1. 我的想法(不确定)是放一些onchange()事件在某个地方识别$("$input")元素正在更改。

  2. 仅接受单个paste事件,如果重复paste()则忽略。 -不确定这是否是正确的方法。

http://jsfiddle.net/8Pvr4/4/

要测试IM试图解释的内容,请在文本字段中输入任何YouTube URL,它应该显示一些内容。

然后删除 URL,数据仍然存在。或者连续添加另一个 URL。生成的数据将堆叠。

$(document).ready(function() {  
     //some regex
$("#input").bind('paste', function(e) {
    var val = undefined;
    //get pasted data
    if(window.clipboardData && window.clipboardData.getData) {
        val = window.clipboardData.getData('Text');
    } else if (e.originalEvent.clipboardData && e.originalEvent.clipboardData.getData){
        val = e.originalEvent.clipboardData.getData('text/plain');
    }
        //check for youtube URL
        if (youtube.test(val)) {
            var yurl = val.match(youtube)[0];
            $.post("youtubejson.php?url="+ yurl, {
                }, function(response){
                $('.printdata').append(response);
        });     
    }
});

我不确定我是否正确理解了您的问题,但我想您的结果是堆叠而不是被替换,您可以使用 .html(响应) 而不是 .append(response) 停止堆叠。