我的代码依赖于onBlur来验证用户标识,但是如果用户只是输入用户然后直接点击提交按钮,那么onBlur事件就不会被触发。
<td><input type='text' name="USERID" onBlur="doValidateUserID(this)"></td>
<td><input type="button" name="assetSaveButton" value="Save" onClick="doSomeStuff(this)"></td>
下面是伪ajax调用
function doValidateUserID(userID) {
// ajax call goes here
}
我的问题是,在用户输入值并单击“提交”按钮后,甚至不会调用doValidateUserID。我尝试使用onChange而不是onBlur但是徒劳无功。
编辑:显然添加警报已经改变了事件的行为,现在单击保存按钮时,会调用doValidateUserID,但会完全跳过doSomeStuff。我必须再次点击调用doSomeStuff
答案 0 :(得分:4)
在点击之前总会调用onblur,但是因为你在处理程序内部执行ajax调用,所以ajax结果调用将始终在click事件之后运行,因为它是非阻塞的(除非你将它设置为同步我会建议反对)
我建议阻止提交按钮,直到ajax完成或推迟提交,直到验证完成
希望这会有所帮助:)