【发布时间】:2010-08-07 03:37:39
【问题描述】:
昨天我发布了this question,它得到了回答,但它导致了另一个问题。
我有以下使用 jquery 验证插件的代码:
//array of success messages and randomly select one
var messages = ["Good!", "Great!", "Awesome!", "Super!", "Nice!","Yay!", "Success!", "Ok!", "Perfect!","Sweet!" ];
function successMessage(label) {
return messages[Math.floor(Math.random() * messages.length)];
}
那我的验证码成功
...success: function(label) {
if(!$(label).hasClass("valid")){
label.addClass("valid").text(successMessage());
}
}...
发生的情况是,每次表单有效时(在 keyup 或 foucus 上),它都会重新生成一条成功消息。我想既然我添加了“有效”类,一个合乎逻辑的步骤是检查标签是否具有“有效”类,因此不要添加消息,因为它已经有一个。然而,这不起作用。任何其他想法都会很棒。
编辑:所以经过进一步的研究和思考。我很确定问题是每次验证表单时都会删除并添加“有效”类(在keyup,提交等)我认为最简单的事情可能是选择标签的值并查看结果是否与数组匹配,如果是,则不要执行任何其他操作添加成功消息。我可能是错的。我也不认为我第一次把这个问题表达得最好。在用户键入时更改验证消息看起来很愚蠢。
编辑 2 在提出许多澄清建议和示例代码之后,我将发布此链接 http://jsfiddle.net/Ye3Ls/20/ 如果您在字段中输入直到收到成功消息,然后继续输入,您会看到问题是。我正在使用 here 找到的验证插件,感谢您的所有患者,因为我整理了如何让它发挥作用。我想我可能需要使用类似 in_array 或 has_value()
【问题讨论】:
-
This however isn't working.是什么意思? -
对代码的输出没有影响。
-
表示代码有无条件语句均可。我确实添加了
alert($(label).hasClass("valid"));,它返回true,表示该类已应用于元素,现在我只需要弄清楚如何阻止它再次被添加。
标签: javascript jquery jquery-plugins jquery-validate