如果无效数据,则防止文本框值更新

时间:2014-10-01 19:28:45

标签: javascript jquery

我已在表单上为多个文本框(<input type="text">)实现了一个处理程序。

$(popUp).on('change', 'input', function (e) {
}

所有值都必须为数字,我调用$.isNumeric($(this).val())以确保新值符合。

但是,如果该值不是数字,我将显示一条消息。但我还想将文本框值恢复为原始值,以确保表单数据保持有效。

是否有任何自动方法可以阻止更新文本框值?

3 个答案:

答案 0 :(得分:3)

正如我在评论中所说,如果你阻止用户首先输入任何非数字字符,所有问题都解决了:

$('input:text').keydown(function( e ) {    
    if(!/([\d ,\$])+/.test(String.fromCharCode(e.which)))
        return false;
    });

答案 1 :(得分:3)

如果新值为数字,则恢复初始值的方法如何:

$(popUp).on('change', 'input', function (e) {
    if (!$.isNumeric(this.value)) {
        this.value = $(this).attr('value');
    }
    else {
        $(this).attr('value', this.value);
    }
});

http://jsfiddle.net/pLok67xh/

另一种选择可能是一起阻止非数字输入,但不确定你是否需要它。

答案 2 :(得分:2)

你可以添加keydown事件。

    $(popUp).on('keydown', 'input', function (e) {
         var unicode=e.keyCode? e.keyCode : e.charCode
         if unicode >= 48 && unicode <= 57 {
             return true;
         }
         else{
              return false;
         }
    });