我正在使用正在驗證的表單使用jQuery驗證。當第一個隱藏'select'具有錯誤類別時,向第二個div添加錯誤類
當您單擊窗體的提交按鈕並且必填字段爲空時,輸入框將添加一個「錯誤」類。
我已經使用尼斯選擇JS自定義樣式我的下拉框。它創建原始選擇的display:hidden
,然後創建相同列表項目的div並對其進行設置。
當我的表單被驗證時,錯誤類被添加到表單中的原始選擇,但不是生成的div。
的代碼如下:
<select id="selector" class="selector error" name="selector" style="display: none;">
<option value="hide" selected="">RSVP</option>
<option value="Yes">Yes</option>
<option value="No">No</option>
</select>
<div class="nice-select selector" tabindex="0">
<span class="current">RSVP</span>
<ul class="list">
<li data-value="hide" class="option selected">RSVP</li>
<li data-value="Yes" class="option">Yes</li>
<li data-value="No" class="option">No</li>
</ul>
</div>
我的jQuery驗證如下:
<script type="text/javascript">
jQuery.validator.addMethod('answercheck', function (value, element) {
return this.optional(element) || /^\b5\b$/.test(value);
}, "Oops, wrong answer silly");
$.validator.addMethod("valueNotEquals", function(value, element, arg){
return arg != value;
}, "Value must not equal arg.");
// validate contact form
$(function() {
$('#contact').validate({
ignore: [],
rules: {
selector: {
valueNotEquals: "hide"
},
hiddenSelect: {
required: true,
},
name: {
required: true,
minlength: 2
},
email: {
required: true,
email: true
},
message: {
required: true
},
answer: {
required: true,
answercheck: true
}
},
messages: {
selector: {
valueNotEquals: "Please select an option"
},
name: {
required: "Go on, tell us your name",
minlength: "Name must consist of at least 2 characters"
},
email: {
required: "No email, no message"
},
message: {
required: "Oops, you have to write something to send this form",
minlength: "Go on, tell us more"
},
answer: {
required: "Oops, try again"
}
},
errorElement: "span",
wrapper: "div", // a wrapper around the error message
errorPlacement: function(error, element) {
offset = element.offset();
error.insertAfter(element)
error.addClass('message'); // add a class to the wrapper
error.css('position', 'relative');
//error.css('left', offset.left + element.outerWidth());
error.css('bottom', offset.bottom);
},
submitHandler: function(form) {
$(form).ajaxSubmit({
type:"POST",
data: $(form).serialize(),
url:"php/contact.php",
success: function() {
$('#success').fadeIn();
$(form).fadeOut(500);
},
error: function() {
$('#error').fadeIn();
}
});
}
});
$('select').niceSelect();
$(".selector").on("click","li",function(){
$("input[name='hiddenSelect']").val($(this).data("value"));
var validator = $("#contact").validate();
validator.form();
});
});
</script>
非常感謝!
你將不得不在你的新元素創建後添加類https://api.jquery.com/addclass/ –
@RafaelDiaz我會怎麼做我的情況? –
您必須自己對代碼進行驗證,因爲jQuery Form Validate無法驗證'div'。你見過這個帖子嗎? http://stackoverflow.com/questions/37550111/jquery-validate-nice-select-consistent-at-all –