2011-11-17 3 views
0

안녕하세요. 일부 입력을 캡처하고 URL의 길이를 줄이거 나 트위터와 비슷한 문자 수의 불일치가 있는지 테스트 해보고 싶습니다. 나는 paste 이벤트에 문자 수를 설정 이미 기능을 가지고 있지만자바 스크립트에서 붙인 입력을 캡쳐하십시오.

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를 반환하므로 regex :

이 하나가 나를 위해 작동합니다.

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

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

단지 # 포스트 MSG 값을 읽어 붙여 있었는지 잡아하는 것 같은 :

두 번째 포인트는 선택에 누락 # 해시 기호가있다 너는 이미하고있다. 문자열에 URL 정규식을 적용하고 URL 정규식을 문자열에서 추출합니다.

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