禁止输入引号的最佳方法

Max*_*ich -1 html javascript quotes jquery double-quotes

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

  1. 覆盖这些键的按键;
  2. 禁止粘贴输入。

这是示例代码:

超文本标记语言

<input id="TestInput"></input>
Run Code Online (Sandbox Code Playgroud)

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
});
Run Code Online (Sandbox Code Playgroud)

小提琴样本

问题:是否有更好的方法来摆脱所有引号而不禁止粘贴?

注意:我认为它可以用 RegExp 解决,但我不擅长它们,所以如果你可以提供 Regexp - 这可以工作。

提前感谢大家。

更新1

更改时,将对调用数据库的方法执行 ajax 调用,并且引号会以某种方式中断查询,如下所示: 查询:

var query = "SELECT Column FROM table WHERE somecolumn LIKE '" + inputVal+ "'%";
Run Code Online (Sandbox Code Playgroud)

如果inputVal是类似的东西, "foo结果刺痛将如下所示:

var query = "SELECT Column FROM table WHERE somecolumn LIKE '" + "foo+ "'%";
Run Code Online (Sandbox Code Playgroud)

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

Rud*_*udy 5

只处理文本框中的数据:

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