我正在构建jquery验证,我需要通过显示Dialog来支持它。
要检查多个选择/输入,因此现在我一次显示多个对话框,并且只显示一个对话框,其中包含尚未验证的字段列表(错误)。
HTML:
2.+(4) #=> 6
jQuery的:
<form method='post'>
input 1: <input type="text" id="input1" name="input1" class="in1"><br>
input 2: <input type="text" id="input2" name="input2" class="in2"><br>
input 3: <input type="text" id="input3" name="input3" class="in3"><br>
<input type="submit" value="Submit" id="submit" name="submit">
</form>
<div id="dialog-input1" title="Error" class="val-noshow">Empty Input 1</div>
<div id="dialog-input2" title="Error" class="val-noshow">Empty Input 2</div>
<div id="dialog-input3" title="Error" class="val-noshow">Empty Input 3</div>
CSS:
$(document).ready(function () {
$("#submit").click(function () {
var input1 = $('#input1').val();
var input2 = $('#input2').val();
var input3 = $('#input3').val();
var valid = true;
if (input1 == "")
{
$('.in1').removeClass('valid').addClass('error');
valid = false;
$(function () {
$("#dialog-input1").dialog({
modal: true,
buttons: {
Ok: function () {
$(this).dialog("close");
}
}
});
});
}
else {
$('.in1').removeClass('error').addClass('valid');
}
if (input2 == "")
{
$('.in2').removeClass('valid').addClass('error');
$(function () {
$("#dialog-input2").dialog({
modal: true,
buttons: {
Ok: function () {
$(this).dialog("close");
}
}
});
});
valid = false;
}
else {
$('.in2').removeClass('error').addClass('valid');
}
if (input3 == "")
{
$('.in3').removeClass('valid').addClass('error');
$(function () {
$("#dialog-input3").dialog({
modal: true,
buttons: {
Ok: function () {
$(this).dialog("close");
}
}
});
});
valid = false;
}
else {
$('.in3').removeClass('error').addClass('valid');
}
return valid;
});
});
工作样本jsfiddle:https://jsfiddle.net/nitadesign/sd8Lk9dv/
我怎么能做到这一点?
答案 0 :(得分:1)
像这样改变你的jquery。
<script>
$(document).ready(function () {
$("#submit").click(function (event) {
event.preventDefault();
$("#dialog-input").html("");
var input1 = $('#input1').val();
var input2 = $('#input2').val();
var input3 = $('#input3').val();
var valid = true;
if (input1 == ""){
$('.in1').removeClass('valid').addClass('error');
$("#dialog-input").append("<p>Empty Input 1</p>");
valid = false;
}
else { $('.in1').removeClass('error').addClass('valid'); }
if (input2 == "") {
$('.in2').removeClass('valid').addClass('error');
$("#dialog-input").append("<p>Empty Input 2</p>");
valid = false;
}
else { $('.in2').removeClass('error').addClass('valid'); }
if (input3 == "") {
$('.in3').removeClass('valid').addClass('error');
$("#dialog-input").append("<p>Empty Input 3</p>");
valid = false;
}
else { $('.in3').removeClass('error').addClass('valid'); }
if( !valid){
$(function () {
$("#dialog-input").dialog({
modal: true,
buttons: {
Ok: function () {
$(this).dialog("close");
}
}
});
});
}
else{ return valid; }
});
});
</script>
由于我们将所有错误消息附加到单个容器中,因此请保留单个div。
<div id="dialog-input" title="Error" class="val-noshow"></div>
答案 1 :(得分:1)
基于Srikanth的答案,但有些编辑,因为那里有一些错误:
$("#submit").click(function(event) {
$("#dialog-input").html("");
var input1 = $('#input1').val();
var input2 = $('#input2').val();
var input3 = $('#input3').val();
var valid = true;
if (input1 == "") {
$('.in1').removeClass('valid').addClass('error');
$("#dialog-input").append("<p>Empty Input 1</p>");
valid = false;
} else {
$('.in1').removeClass('error').addClass('valid');
}
if (input2 == "") {
$('.in2').removeClass('valid').addClass('error');
$("#dialog-input").append("<p>Empty Input 2</p>");
valid = false;
} else {
$('.in2').removeClass('error').addClass('valid');
}
if (input3 == "") {
$('.in3').removeClass('valid').addClass('error');
$("#dialog-input").append("<p>Empty Input 3</p>");
valid = false;
} else {
$('.in3').removeClass('error').addClass('valid');
}
if (!valid) {
$(function() {
$("#dialog-input").dialog({
modal: true,
buttons: {
Ok: function() {
$(this).dialog("close");
}
}
});
});
}
return valid;
});