禁止输入引号的最佳方式

Best way to forbid quotation marks on input

本文关键字:最佳 方式 禁止输入      更新时间:2023-10-07

假设我有一个<input>标记。此标记的值用于更改。问题是,如果用户输入单引号或双引号,就会破坏代码。现在这个问题解决得很简单:

  1. 为这些键覆盖按键
  2. 禁止粘贴到输入

这是示例代码:

HTML

<input id="TestInput"></input>

Javascript

$("#TestInput").keypress(function (e) { // override keypress of " or '
    if (e.which == 13 || e.which == 34 || e.which == 39) {
        return false;
    }
})
.bind("paste", function (e) {// forbid paste
    e.preventDefault();
})
.change(function(){
 var value = $(this).val();
    //and then I use this value for my operations
});

样品Fiddle

问题是:有没有更好的方法可以在不禁止粘贴的情况下去掉所有引号?

注意:我认为它可以用RegExp解决,但我不擅长它们,所以如果你能提供RegExp,这可能会奏效。

提前感谢大家。

更新-1

在更改时,将对一个方法执行ajax调用,该方法调用DB并以某种方式用引号打断查询,如下所示:查询:

var query = "SELECT Column FROM table WHERE somecolumn LIKE '" + inputVal+ "'%";

如果inputVal类似于"foo,则生成的刺痛将看起来像:

var query = "SELECT Column FROM table WHERE somecolumn LIKE '" + "foo+ "'%";

这显然打破了查询。+数据库中没有包含引号的项目。

只处理文本框中的数据:

$("#TestInput").on('input', function () {
    var value = $(this).val().replace(/'/g, '').replace(/"/g, '');
    // go on with processing data
});