我被困在一个场景中。我有一个字段文本2,这是必需的以及text3它应该加起来100%。问题是它会被私有地验证,但我希望验证能够一起显示。喜欢
Text2是必需的
Text2和Text3的总和必须等于100%
以下是我的代码
<form action="" id="frmLogin" name="frmLogin" method="post">
<input type="text" id="text1" name="text1" placeholder="text1">
<input type="text" id="text2" name="text2" placeholder="text2">
<input type="text" id="text3" name="text3" placeholder="text3">
<input type="submit" id="submit" value="Submit" data-mini="true">
</form>
$('#frmLogin').validate({
onfocusout: false,
onkeyup: false,
ignore: "",
rules: {
text1: {
required: true
},
text2: {
required: true,
TotalSum: true
}
},
showErrors: function (errorMap, errorList) {
var messages = "";
var check = 0;
$.each(errorList, function (index, value) {
check = 1;
var id = $(value.element).attr('id');
messages += (index + 1) + ". " + value.message + "\n";
});
messages = "Please correct following errors \n" + messages;
if (check == 1) {
alert(messages);
}
},
submitHandler: function () {
alert('Success!!!');
},
messages: {
text1: {
required: "Please enter text1"
},
text2: {
required: "Please enter text2"
}
}
});
jQuery.validator.addMethod("TotalSum", function () {
var arr = ['text2', 'text3'];
var Sum = 0;
for (var i = 0; i < arr.length; i++) {
var test = arr[i];
var sum2 = $('#' + test).val();
if (sum2 == null || sum2 == 'NaN' || sum2 == '') sum2 = 0;
Sum = parseInt(sum2) + parseInt(Sum);
}
if (Sum != 100) {
return false;
} else return true;
}, "Sum of Text2 and Text3 must equal 100%");
以下是同一FIDDLE
的小提琴答案 0 :(得分:0)
我无法理解你的描述......你在谈论第2和第3场,但从未提及你的领域#1正在发生什么。无论如何,这个答案非常接近,因为它验证了两个字段,最多可以添加100个并将错误消息放在另一个位置。我相信你可以轻松调整它以满足你的需求。
工作演示:http://jsfiddle.net/B6N5f/
$(document).ready(function () {
jQuery.validator.addMethod("TotalSum", function (value, element, params) {
total = parseFloat(value) + parseFloat($(params[0]).val());
return total == 100;
}, "Total must add up to 100%!");
$("#frmLogin").validate({
rules: {
text1: {
required: true,
TotalSum: ['#text2']
},
text2: {
required: true,
TotalSum: ['#text1']
}
},
groups: {
percent: "text1 text2"
},
errorPlacement: function (error, element) {
error.insertAfter($('#submit'));
}
});
});