2011-11-17 86 views
0

你好,我想捕獲一些輸入和測試,看看它的URL是爲了縮短它還是從類似twitter的字符計數中抹黑。 我已經一個功能設置上粘貼事件的字符數,但我不知道現在如何抓住什麼粘貼使用Javascript捕獲粘貼輸入

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'); 
        } 

      }); 

回答

0

嗨,你需要先調試代碼:)

你的URL的正則表達式不適合我。加入

alert(urlexp.test("http://google.com")); 

某處。爲我返回false,所以我用另一個隨機URL正則表達式替換它:

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

這一個正在爲我工​​作。

第二點是存在#井號在選擇丟失:

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

應該

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

抓住什麼粘貼,只是閱讀#後味精價值,你已經在做。將URL正則表達式應用於字符串並從中提取URL:

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