2010-09-08 70 views
3

如何限制「♥♣」像保存到數據庫中的字符。如果這些字符出現在名稱文本字段中,則應該拋出錯誤消息。 我在軌道上使用紅寶石。如何在文本框中限制「♥♣」字符

感謝, Anubhaw

+0

你要防止某些字符(黑名單),或防止一切,但一組特定的字符(白名單)? – aularon 2010-09-08 10:09:18

+0

白名單更好(如果可能的話),因爲那樣你就不會對你沒有想到的事情感到驚訝。 (好吧,你不太可能會爲他們感到驚訝......) – 2010-09-08 10:10:37

+0

其實我想限制名字如'♥♣name♣♥'這個。在數據庫中跟隨♣♥的值是¥£。那麼,我如何限制以下幾點,看起來都一樣。 – Anubhaw 2010-09-08 10:19:01

回答

6

僅允許一個特定的字符集(白名單),其IMO是一個例子見這更好的和更安全的:

var allowed = /[a-ZA-Z0-9]/; // etc. 

window.onload = function() { 
    var input = document.getElementById("test"); 

    input.onkeypress = function() { 
     // Cross-browser 
     var evt = arguments[0] || event; 
     var char = String.fromCharCode(evt.which || evt.keyCode); 

     // Is the key allowed? 
     if (!allowed.test(char)) { 
      // Cancel the original event 
      evt.cancelBubble = true; 
      return false; 
     } 
    } 
}; 

來自: prevent typing non ascii characters in a textbox

可替換地可以使用正則表達式來剝離非ASCII字符。

在這裏看到:How to remove all non - ASCII characters from a string in Ruby

+2

+1爲良好的JavaScript解決方案。然而,在插入數據庫之前還需要檢查RoR。 – Thomas 2010-09-08 10:18:28

1

一些JavaScript當他們把這些字符的形式告知用戶。您需要需要您的RoR代碼中的驗證例程,以確保只有可接受的字符實際放置在數據庫中。