2010-02-10 76 views
1

我有悄悄地检查,看是否有客户在我们面前下令结帐页面。jQuery的变化() - 不能删除焦点

他们填写自己的电子邮件地址后,专注于下一个框,我仰望电子邮件并提出一个“欢迎回来”类型的事情与选项记住他们的细节。

我在IE6中得到一个问题 - 当焦点在输入框丢失,AJAX功能运行正常,但焦点返回到输入框中。这意味着只要客户尝试点击离开电子邮件输入框,他们就会一直返回到它并且无法继续。

是否有阻止这种行为的一种方式?

// check when the e-mail box is changed 
    $("#email").change(function(event) { 
    $.ajax({ 
     type: "POST", 
     url: "procBasketEmailLookup.php", 
     data: $("#checkoutform").serialize(), 
     success: function(response) { 
      $('#emailstuffOutput').hide(); 
      $('#emailstuffOutput').html(response); 
      $('#emailstuffOutput').show('slow'); 
     } 
     }); 
     // DON'T ALLOW THE PAGE TO SUBMIT 
    return false; 
    }); 
+1

,如果你不从脚本返回“假”会发生什么? – Pointy 2010-02-10 17:53:37

+0

@Pointy然后表单将提交并重定向到操作页面。 – 2010-02-10 17:55:18

+0

@vivin如果删除“return false”,为什么要提交表单? – 2010-02-10 17:58:07

回答

3

尝试:

jQuery("#emailInputField").blur(); 

假如把它放在你的AJAX调用的成功处理程序,甚至在你的change()处理程序。我无法从你的问题中得知是否是导致问题的AJAX调用,或者它是否为change()处理程序。但是这个应该工作。

编辑

关于尖尖的评论。使用blur()弄乱标签序列。另外,Pointy和Mattias指出你从你的处理程序返回false。由于您不在submit()处理程序中,因此您不需要这样做。 return false;也可能是您的问题的原因。

+0

调用“blur()”的问题是它可能会搞乱“标签序列”。如果用户进行了更改,然后使用“选项卡”转到下一个字段,则调用“blur()”会导致浏览器将焦点重置为页面上某个或多或少的随机点。 – Pointy 2010-02-10 18:03:39

+0

好点;无论如何,我正在更新答案 - 它看起来可能与他从'change()'处理程序返回的'false'有关。 – 2010-02-10 18:04:21