在Javascript中捕获粘贴的输入

时间:2011-11-17 16:44:27

标签: jquery regex

您好我想捕获一些输入并进行测试以查看它是否是一个网址,以便缩短它或者丢弃类似于twitter的字符数。 我有一个函数已经设置了粘贴事件的字符数,但我现在不知道如何抓取粘贴的内容

    var urlexp = new RegExp( '/(\b(https?):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig' );
    var message = $("#post-msg").text();
    var twstartchars = 140 - message.length;
    var fbstartchars = 420 - message.length;
    $("#post-msg").bind("input paste", function (e) {
                    var a=$("#post-msg").val().length;
                    var post = $("post-msg").val();

                    if ( urlexp.test(post) ){
                            $('.shortenlinks').show();
                    }

                    $("#fb-char").text((420-a));
                    $("#tw-char").text((140-a));
                    if ( a > 120 ){
                            $("#tw-char").css('color','red');
                            if ( a > 380 ){
                                    $("#fb-char").css('color','red');
                            }
                    }else{
                            $("#fb-char").css('color','#333');
                            $("#tw-char").css('color','#333');
                    }

            }); 

1 个答案:

答案 0 :(得分:0)

您好需要先调试代码:)

您的网址正常表示不适用于我。通过添加

自己尝试一下
alert(urlexp.test("http://google.com"));

某处。为我返回false,所以我用另一个随机URL regex替换它:

urlexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/g

这个适合我。

第二点是选择器中缺少#hash符号:

var post = $("post-msg").val();

应该是

var post = $("#post-msg").val();

要抓取粘贴的内容,只需阅读#post-msg值即可。将URL正则表达式应用于字符串并从中提取URL:

$(".shortenlinks").innerHtml(""); // clear links
while(var match = urlexp.exec($("#post-msg").val())) {
    $(".shortenlinks").append(match[0] + "<br />"); // add each link
}