Javascript jquery-将事件排队,直到ajax调用完成

Javascript jquery-将事件排队,直到ajax调用完成,javascript,jquery,Javascript,Jquery,我在这里使用rails和jquery 当电子邮件字段失去焦点(模糊)时,我会呼叫服务器验证它是否有效(电子邮件格式和唯一性)。如果它是有效的,我将一个隐藏的输入值更新为true,如果它是无效的,则将其更新为false 然后用户在另一个电子邮件字段上单击(焦点),如果第一封电子邮件无效(隐藏输入错误),我将禁用此字段并发送一些警报消息 我的问题是,用户在第一个电子邮件字段中键入一封电子邮件,这是一封有效的电子邮件,因此我会更新隐藏字段,但如果用户在键入第一封电子邮件后单击第二个电子邮件字段,则会在

我在这里使用rails和jquery

当电子邮件字段失去焦点(模糊)时,我会呼叫服务器验证它是否有效(电子邮件格式和唯一性)。如果它是有效的,我将一个隐藏的输入值更新为true,如果它是无效的,则将其更新为false

然后用户在另一个电子邮件字段上单击(焦点),如果第一封电子邮件无效(隐藏输入错误),我将禁用此字段并发送一些警报消息

我的问题是,用户在第一个电子邮件字段中键入一封电子邮件,这是一封有效的电子邮件,因此我会更新隐藏字段,但如果用户在键入第一封电子邮件后单击第二个电子邮件字段,则会在更新隐藏输入之前触发第二个字段上的焦点事件,并且错误地禁用第二个电子邮件字段

基本上,我需要将焦点事件排队,直到ajax调用完成


抱歉,解释起来有点混乱,如果有人理解我说的话,有解决办法吗?

我不会禁用第二个字段。一旦第一个字段失败,第二个字段也将无效,这一点应该非常清楚。如果您喜欢这个用户范例,那么我将提供某种模式反馈窗口。(正在验证…),但如果第一个字段无效,我不能允许用户继续。他需要输入正确的第一个,这样他才能访问第二个。我同意,这听起来好像设计有缺陷。您可能应该(1)隐藏第二个字段,或者(2)在收到服务器的响应之前禁用它。另外,在服务器返回请求之前,让用户知道正在发生什么。或者从一开始就禁用它,并在第一个字段旁边放置一个按钮,类似于“验证”。如果返回无效,则不会发生任何更改,并通知用户。如果有效,第一个字段被禁用,第二个字段被启用。当1获得焦点时,我在2上显示一个覆盖div,并在1使用ajax完成验证时隐藏它,这样用户只能在ajax完成后单击2。