我有一个非常奇怪的问题。这是我目前的Javascript:
jQuery('.highlightableTDCell input').keydown(function () {
var val = jQuery(this).val();
if (!GridView.prototype.validateStandardCellNumberFormat(val)) {
return false;
}
else return true;
});
当我使用它时,我仍然可以逃脱进入非法角色,但仅此而已。我真的很困惑,因为我认为这会先发生。
答案 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
即可获取值