Javascript事件同步问题
关于javascript中onblur和onclick事件处理程序执行的同步,我有一个很小但非常重要的问题 实际上,我有一个html表单,包含一个文本框和一个提交按钮。onblur放在textbox上,此处理程序执行一个名为ajexValidation()的方法。Submit按钮与执行ajexSubmitData()的onclick hndler关联。 在这两种情况下都使用Ajex处理程序,因为输入的日期将从远程服务器进行自我验证,并重新运行已验证的数据并在文本字段中分配数据 在onclick的情况下,handler将验证数据提交给远程服务器以查询其他详细信息 这是页面的常见流程 但是有一些问题 当用户单击submit按钮时,首先单击onblur,然后单击onclick 现在数据正在服务器上的验证过程中,onclick开始执行ajexSubmitData(),这会导致问题,因为该过程是-首先验证dat,然后将验证数据发送到服务器进行查询, 您可以说是偶数同步问题 所以我只需要跟踪onblur方法完成通知并暂停onclick方法的执行并等待该通知。收到通知后,启动ajexSubmitData() 任何帮助都将受到高度重视Javascript事件同步问题,javascript,jquery,ajax,Javascript,Jquery,Ajax,关于javascript中onblur和onclick事件处理程序执行的同步,我有一个很小但非常重要的问题 实际上,我有一个html表单,包含一个文本框和一个提交按钮。onblur放在textbox上,此处理程序执行一个名为ajexValidation()的方法。Submit按钮与执行ajexSubmitData()的onclick hndler关联。 在这两种情况下都使用Ajex处理程序,因为输入的日期将从远程服务器进行自我验证,并重新运行已验证的数据并在文本字段中分配数据 在onclick的
-rajneesh为什么不使用发送的相同方法进行验证。只是一个想法。另一个方法是一直禁用“提交”按钮,直到所有内容都得到验证。您可以这样做:
var globalFlag = WAITING;
function onBlur_validateData() { // your "AjexValidation"
sendAjaxRequest( function(data) { // this is the call back on ajax request completion
if( data was valid )
globalFlag = VALID;
else
globalFlag = INVALID;
});
}
function onClick_submitData() { // wrapper around your "ajexSubmitData"
if( globalFlag==WAITING )
setTimeout( onClick_submitData, 200 );
else if( globalFlag==INVALID )
alert( "Your input was invalid!" );
else ajexSubmitData();
}
function ajexSubmitData() {
// do your stuff
}
现在,globalFlag
可能是对象的一部分,或者是全局可访问的任何东西
此外,请确保“提交”按钮在单击后被禁用
注意setTimeout调用是如何创建“线程中的递归循环”的。这将防止您的UI在代码等待验证完成时挂起
干杯
jrh.为什么不使用form.onsubmit事件触发您的验证代码,并让验证在成功时调用submit函数?通过这种方式,您可以覆盖默认提交,如果没有Javascript,您仍然可以返回到标准提交?不行。。我可以把它们加密吗?为什么不能?顺便说一句,客户端验证是一种工具,而服务器端验证是必须的。