3
A
回答
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代码中的验证例程,以确保只有可接受的字符实际放置在数据库中。
你要防止某些字符(黑名单),或防止一切,但一组特定的字符(白名单)? – aularon 2010-09-08 10:09:18
白名单更好(如果可能的话),因为那样你就不会对你没有想到的事情感到惊讶。 (好吧,你不太可能会为他们感到惊讶......) – 2010-09-08 10:10:37
其实我想限制名字如'♥♣name♣♥'这个。在数据库中跟随♣♥的值是¥£。那么,我如何限制以下几点,看起来都一样。 – Anubhaw 2010-09-08 10:19:01