【发布时间】:2016-02-14 09:21:13
【问题描述】:
我在我的邮政编码表单上使用jQuery Validate Plugin。
我已经对其进行了设置,以便根据验证返回一个 <label> 类 .error 或 .valid。如果<input> 验证通过,则会显示隐藏的<a> 以显示联系号码。
除非用户在输入有效邮政编码后输入无效邮政编码,否则它可以正常工作。如果他们这样做,则根据需要将有效消息替换为无效消息。但联系电话<a> 标签仍然可见。
代码如下:
//js
$('.postcode_form').validate({
rules: {
postcode: {
required: true,
range: [3030, 3340]
}
},
messages: {
postcode: {
range: "Sorry, doesn't look like we service that area"
}
},
onkeyup: false,
success: function (label) {
var callNow = ".call-now";
label.addClass("valid").text("Looks good, call us now");
if(label.hasClass("valid")) {
$(callNow).addClass('is-visible');
}
}
});
//html
<form class="postcode_form" id="postcode_form" name="postcode_form" action="#">
<input type="number" id="your_postcode" class="your_postcode" name="postcode" placeholder="3???">
<button type="button" class="area-btn"><span></span></button>
<a href="tel:+6#########" class="call-now">##########</a>
</form>
正如我所说,一切都很好,除非他们在提交了有效的邮政编码后输入了无效的邮政编码。我知道他们不太可能这样做,但对于那些确实发生的情况,我想解决它。
我在success: function 中有一个else 子句,就像这样,
success: function (label) {
var callNow = ".call-now";
label.addClass("valid").text("Looks good, call us now");
if(label.hasClass("valid")) {
$(callNow).addClass('is-visible');
} else {
$(callNow).removeClass('is-visible');
}
}
但它似乎没有任何效果。我认为它甚至没有被阅读。
我倾向于label.addClass("valid").text("Looks good, call us now"); 是罪魁祸首。就像一旦构建了有效的<label>,它就无法识别removeClass 调用。即使整个验证过程仍在进行中。
有什么想法吗?
【问题讨论】:
标签: jquery forms jquery-validate