2012-12-06 61 views
2

因此,我有一個默認值爲「www.mysite.com/users/」的輸入框,在這個值之後用戶應該能夠爲自己定義一個短URL,例如:「mike 」。jQuery Live正則表達式檢查

現在,我只想允許az和AZ作爲短網址,我想要檢查用戶輸入的實況,並阻止他們使用其他字符作爲&%!「£...,這裏是我的代碼:

<input type="text" id="short_url" value="www.mysite.com/users/" /> 
<script> 
    ('#short_url').on('keypress', function(){ 
       var short_url = $(this).val(); 
       if(short_url.substr(0, 21) != 'www.mysite.com/users/'){ 
        $(this).val('www.mysite.com/users/'); 
       }else{ 
        // Only allow a-z 
         short_url = short_url.substr(21); 
         var RegEx = /^[a-z0-9]$/; 
         if(!RegEx.test(short_url)) { 
          if(short_url != '') 
          return false; 
         } 
       } 
      }); 
</script> 

我在上面的代碼中試過的是,不讓用戶清除我的site.com,所以他不得不在默認值後添加他的短URL,也只允許輸入RegEx,但是它不工作,我應該如何實現這個?

另一件事是,我也希望允許點在短網址,但只有1點!

在此先感謝

+0

也許只是使用一個正則表達式:/www.mysite.com\/users\/[a-z0-9]/i –

回答

1

由於您的基本URL永遠不會更改......爲什麼不只是在輸入字段之前創建該靜態文本。它將大大簡化您的代碼。

<span>www.mysite.com/users/</span> 
<input id="short_url" type="text" />​ 

然後一點點jQuery來處理驗證

(function(){ 

    var shortUrlRegexp = /^[a-zA-Z]*(\.{1}[a-zA-Z]*)?$/; 

    $("#short_url").on("keyup", function(){ 

     var text = $(this).val(); 

     var isMatch = shortUrlRegexp.test(text); 

     $(this).toggleClass("invalid", !isMatch); 

    }); 

}());​ 

這裏是一個live demo

+0

我感謝你的幫助,但這不是我想要的!我想在我的輸入中的基礎網址,也不允許用戶鍵入任何東西,但與jQuery按鍵(),但無論如何,謝謝 – behz4d

+0

@ behz4d - 我的問題是爲什麼你需要**有這個基地址輸入如果從不改變?我當然可以更新這個例子,但是你應該能夠適應你的需求。 – Josh

+0

好的,謝謝,我使用這種方式,但是這個RegEx似乎允許在文本的開始/結束處使用點號,我應該只允許它在文本之間,而不是第一個或最後一個字符 – behz4d

0

這將允許字母數字+一個.。必須以字母和數字字符開頭和結尾

^[a-z0-9]+\.?[a-z0-9]+$