禁止在输入上引用引号的最佳方法

时间:2013-11-26 07:57:29

标签: javascript jquery html quotes double-quotes

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

  1. 覆盖这些键的按键;
  2. 禁止输入粘贴。
  3. 以下是示例代码:

    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
    });
    

    Sample Fiddle

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

    注意:我认为它可以通过RegExp解决,但我对它们并不好,所以如果你能提供Regexp - 这可能有效。

    先谢谢大家。

    更新-1

    在更改时,对一个调用DB的方法执行ajax调用,引号会以某种方式中断查询:  的查询:

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

    如果inputVal类似于"foo,则产生的刺痛将如下所示:

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

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

1 个答案:

答案 0 :(得分:2)

仅处理文本框中的数据:

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