【发布时间】:2015-01-19 10:19:15
【问题描述】:
我一直在寻找一天的时间,试图弄清楚如何让实时错误消息显示在不同的 div 中。
我为每个输入字段和每个错误使用自定义图标和 div,以及每个输入字段的成功图标。但是,当单击其他输入字段时,我一直在尝试的代码会发生奇怪的变化。
这里是 JS:
$(function validate() {
var invalidFirstName = $("#blankField"),
validFirstName = $('#validCheck');
var rules = {
rules: {
user_first_name: {
required: true
}
errorPlacement: function (error,element) {
if (element.attr("name") == "user_first_name"){
(invalidFirstName).removeClass('hidden');
(validFirstName).addClass('hidden');
}
},
success: function() {
// if (element.attr("name") == "user_first_name"){
(invalidFirstName).addClass('hidden');
(validFirstName).removeClass('hidden');
// }
}
};
$('#briefStepOne').validate(rules);
});
如您所见,我也尝试过执行 if 语句,但它根本不起作用!任何帮助都会很棒。
这是我的 html 的布局:
<div class="form-fields input-text">
<div class="input-interaction-container">
<label for="user_first_name" class="user_first_name">First Name*</label>
<input type="text" name="user_first_name" id="user_first_name" maxlength="50" class="user_first_name">
</div>
<div class="form-error-section pure-hidden-phone hidden" id = "blankField">
<i class="fa fa-minus-circle"></i>
<p>Field cannot be left blank</p>
</div>
<div class=" hidden form-error-section valid-icon pure-hidden-phone" id="validCheck">
<i class="fa fa-check-circle"></i>
</div>
</div>
<div class="form-fields input-text">
<div class="input-interaction-container">
<label for="user_last_name">Last Name*</label>
<input type="text" name="user_last_name" id="user_last_name" maxlength="50">
</div>
<div class=" hidden form-error-section pure-hidden-phone">
<i class="fa fa-minus-circle"></i>
<p>Field cannot be left blank</p>
</div>
<div class=" hidden form-error-section valid-icon pure-hidden-phone">
<i class="fa fa-check-circle"></i>
</div>
</div>
更新的 JS 文件:
$(document).ready(function() {
$('#briefStepOne'.validate({
rules: {
user_first_name: {
required: true
},
user_last_name:{
required:true
},
user_email_address:{
required:true
}
},
errorPlacement: function(error,element) {
if (element.attr('name') == 'user_first_name'){
$('#blankField').removeClass('hidden');
$('#validCheck').addClass('hidden');
} else if (element.attr('name') == 'user_last_name'){
$('#last-name-empty').removeClass('hidden');
$('#last-name-good').addClass('hidden');
}
},
success: function(label) {
if (label.attr('id') == 'user_first_name-error'){
$('#blankField').addClass('hidden');
$('#validCheck').removeClass('hidden');
} else if (label.attr('id') == 'user_last_name-error'){
$('#last-name-empty').addClass('hidden');
$('#last-name-good').removeClass('hidden');
}
}
}));
});
【问题讨论】:
-
你有一个函数叫做
validate(),插件的方法叫做.validate()。$('#briefStepOne').validate(rules)是包含在同名函数中的方法。那怎么办?它永远不会被调用。 -
也在看这个小提琴jsfiddle.net/zMYVq 它似乎对第一个字段的反应不如对第二个字段的反应。错误信息不显示
-
This jsFiddle 工作正常,所有/两条消息都出现了。解释更多。
-
这里有语法错误:
$('#briefStepOne'.validate({和这里:}));请注意缺少和多余的括号。
标签: javascript jquery jquery-validate