我试图在发生之前阻止以下按键发生:
' " / * - +
我尝试过使用以下各种变体:
<textarea>Here may the forbidden characters not enter</textarea>
<script>
function onKeyDown(event) {
event.preventDefault();
}
</script>
..但是没有成功。背景是它链接到一个即时更新数据库的jQuery,但我不希望在数据库中看到这些字符,因此需要在它们发生之前将它们停止。想法?
答案 0 :(得分:1)
此代码会阻止", ', *, +, -, /
中的<textarea>
个字符。
$(function(){
// ", ', *, +, -, /
var disabledOn = [34, 39, 42, 43, 45, 47];
$('textarea').on('keypress', function(ev){
if ($.inArray(ev.which, disabledOn) >= 0){
ev.preventDefault();
}
});
})
答案 1 :(得分:0)
除了阻止特定的按键,您还可以在更改和键盘事件上清理textarea,如下所示:
$("#thisTextarea").change(function() { removeSpecialChars($(this)) });
$("#thisTextarea").keyup(function() { removeSpecialChars($(this)) });
function removeSpecialChars($textarea) {
$textarea.val($textarea.val().replace(/\'|\"|\/|\*|\-|\+/g,''));
}
答案 2 :(得分:0)
虽然让客户端代码写入数据库并不是一个好主意,但实际上非常糟糕,只要有人输入,一个解决方案就是event.preventDefault()
。
$(document).on("keydown", function(e){
var k = e.keyCode;
var nonShifted = [222, 191, 189];
var shifted = [56, 187];
if (nonShifted.indexOf(k) !== -1 || (shifted.indexOf(k) !== -1 && e.shiftKey)){
e.preventDefault();
}
})