【问题标题】:false jquery validation followed by true validation makes chrome text area lose focusfalse jquery 验证后跟 true 验证使 chrome 文本区域失去焦点
【发布时间】:2011-06-01 19:19:35
【问题描述】:

我在带有文本区域的表单上使用 jquery 验证。表单中的 html 如下所示(不包括其他验证正常的字段):

<form id="contact" name="contact" action="/forms/contact_received.php" method="get">
    <textarea name="message" cols="60" rows="10" value=""></textarea>
</form> 

jquery 脚本如下所示:

$("#contact").validate({    
    rules: { 
        name: "required",
        email: {required: true, email: true},
        subject: "required",
        message: {required: true}
    },
    messages: { 
        name: "Enter your name", 
        email: {required: "Please enter a valid email address",minlength: "Please enter a valid email address"},
        subject: "it's required",
        message: "Please enter your message in the box above"
    }
});

在 Chrome 中,当此文本区域为空时用户尝试提交时,会出现我的错误消息。

然后当用户在 textarea 中输入文本时,他被允许写入一个字符(显示为红色的“错误”文本,然后在第一个字符后变为黑色)然后错误消息消失,失去对 textarea 的关注并且 textarea回到它的初始宽度。然后用户必须再次单击表单才能输入评论的其余部分。

如何在验证返回“true”后保持对文本区域的关注?

【问题讨论】:

  • false 后没有后续。完成:-) 你之前的问题呢。我告诉过你把 return false。
  • 可以用css类'required'代替js写规则吗?这可能是一种解决方法。另外,为什么不是 rules.message==='required'?为什么 rules.message 是一个对象?也许将其更改为字符串会有所不同。
  • zod 我不明白你在上一个问题或这个问题上的意思。其他 jquery 示例都没有像这样在脚本中返回 false,这都是由 validate 插件处理的,不是吗?
  • teddy,我尝试用 CSS 而不是 js 规则编写它,它做同样的事情。至于规则/消息,我刚刚将其从字符串更改为对象,以查看它是否会在将其复制到 stackoverflow 之前更改任何内容。

标签: javascript jquery validation textarea


【解决方案1】:

我想通了。问题是我在站点范围的 CSS 中设置了 .error{display:block} 。也许我应该删除它,但有几个人在 jquery 论坛中遇到了同样的问题,所以这是一个合法的问题:

http://forum.jquery.com/topic/jquery-validate-in-chrome-field-loses-focus-on-unhighlight

【讨论】:

  • 我不知道这算不算。这是我的错误。如果我在这里做错了,请标记为删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 2013-06-19
  • 1970-01-01
  • 2011-07-04
  • 1970-01-01
相关资源
最近更新 更多