如何在设置输入值之前验证输入?

时间:2012-02-21 17:15:48

标签: javascript jquery validation

我有一个非常奇怪的问题。这是我目前的Javascript:

jQuery('.highlightableTDCell input').keydown(function () {
    var val = jQuery(this).val();
    if (!GridView.prototype.validateStandardCellNumberFormat(val)) {
        return false;
    }
    else return true;
});

当我使用它时,我仍然可以逃脱进入非法角色,但仅此而已。我真的很困惑,因为我认为这会先发生。

2 个答案:

答案 0 :(得分:1)

在keydown事件内部,element.value尚未更新以考虑当前正在按下的键。如果你想阻止按键击中输入框,你需要查询event.which并查看它是否是你想要允许的密钥。

答案 1 :(得分:0)

在新内容输入输入之前引发事件(允许您取消默认行为。)

您可以使用类似的内容来获取新内容:

$('.highlightableTDCell input').keypress(function(e){
    var temp = this.value + String.fromCharCode(e.which)   

    return GridView.prototype.validateStandardCellNumberFormat(temp)
});

请注意,这不是完整的证据。比如当用户在输入中间输入新的字符时。

验证只能在blur进行。使用HTML5应该会更好,但并非所有浏览器都支持它。

  • 提示:this.value == jQuery(this).val()无需创建jQuery object即可获取值