1

与何时显示我的错误消息进行斗争。我的代码在下面,但基本上,表单应该验证 BLUR 上的输入字段。这在很大程度上是可以接受的。

不过,我需要做的只是让验证出现在模糊中,如果他们点击的下一件事不是该字段旁边的帮助图标。

我的客户回来说如果他们进入一个字段,这不是一个好的用户旅程,然后让它点击帮助(触发模糊功能),当他们点击帮助时,因为该字段失去焦点,它会尝试验证它,并且用户在没有实际输入任何内容的情况下收到错误消息。

在尝试验证之前,我无法检查该字段是否为空,因为它是必填字段,如果该字段为空,我也需要出现错误。

这有点难以解释,但希望我做得很好。

HTML

    <div class="question" id="PD_email">

 <label>Email address</label>
 <input class="v-middle jsValid_email" id="email" type="text" size="50" />
 <label class="inline helpTrigger cursor">Why do we ask for this?</label>

 <div class="hidden help rounded03 aboveTrigger" style="left:385px;" id="emailAddress_help">
  HELP MESSAG IN HERE
 </div>

 <div class="error hidden">
  ERROR MESSAGE IN HERE
 </div>

</div>

<div class="question" id="PD_phone">

 <label>Phone number</label>
 <input class="v-middle jsValid_phone" id="phone" type="text" size="50" />
 <label class="inline helpTrigger cursor">Why do we ask for this?</label>

 <div class="hidden help rounded03 aboveTrigger" style="left:385px;" id="emailAddress_help">
  HELP MESSAGE IN HERE
 </div>

</div>

jQuery 脚本

 $('input').blur(function() { 
         if ($(this).hasClass('jsValid_email')){
     if (($(this).val()=='') && ($(this).hasClass('jsOptional')))
  {/* do nothing*/}
  else {
  email(this.id);
        }

然后这会调用一个函数来验证特定类型的输入字段(电子邮件、电话、alpha、dob 等),然后如果它未能通过 BLUR 的验证检查,它会将字段和标签着色为红色。

因此,如果有任何编码 if (!($(this).siblings('.help').click())) 类型事件的方法,那将很方便!

谢谢,凯文

4

1 回答 1

0

blur 事件不知道您要去哪里,因此不能以这种方式完成。您需要稍后进行验证,我可以看到两个选项:

  1. 设置超时。稍后运行验证,并希望帮助按钮上的 Focus 事件已经运行,这应该标记验证不应该发生。这是有风险的,但很容易实现。

  2. 对每个其他控件的焦点事件进行验证调用,以便在它发生时知道哪个控件具有焦点。如果您有一个大型或复杂的表单,并且无法轻松识别所有其他控件,则这是一个问题。您应该在需要验证的指定字段的 Focus 事件上进行标记(不是模糊,因为事件顺序未定义或一致),并且仅在需要时处理。

当然,在任何一种情况下,您都必须将焦点重新设置为失败的控件。如果您需要在多个控件上执行此操作,那么最好的选择是提交验证,即使他们可能对此不满意。尝试在多个控件上处理此处理的复杂性会让我头疼。

(是的,我意识到您现在可能已经对其进行了排序,但是对于其他任何人,他们可能会感兴趣)

于 2011-07-01T09:24:44.783 回答