我正在尝试执行此操作,如果用户为两个不同的框选择相同的值,我必须显示一些errors.my文本框代码如下。
<input class="order form-control vnumber" type="text" maxlength="1" name="Orderbox[]" required="true">
<input class="order form-control vnumber" type="text" maxlength="1" name="Orderbox[]" required="true">
<input class="order form-control vnumber" type="text" maxlength="1" name="Orderbox[]" required="true">
<input class="order form-control vnumber" type="text" maxlength="1" name="Orderbox[]" required="true">
所以文本框值应该不同,如1,2,3,4,它不应该是1,1,1,1所以我尝试使用jquery进行实时更新。
$('.order').keyup(function () {
// initialize the sum (total price) to zero
var val = 0;
var next_val=0;
// we use jQuery each() to loop through all the textbox with 'price' class
// and compute the sum for each loop
$('.order').each(function() {
val+=$(this).val();
});
alert(val);
if (next_val==val) {
alert("same value");
}
next_val=val;
});
但它没有按照我的预期工作,任何人都可以告诉我有什么解决方案。任何帮助都会受到赞赏。谢谢。
JFIDDLE: jfiddle
答案 0 :(得分:2)
试试 Demo Fiddle 。
var valarr = [];
$('.order').keyup(function () {
var curr = $(this).val();
if (jQuery.inArray(curr, valarr) > -1) {
alert('exists');
} else {
valarr.push(curr);
}
});
答案 1 :(得分:1)
您需要将更多代码放在.each()
循环中。另外,将val+=
更改为val=
$('.order').each(function() {
val=$(this).val();
alert(val);
if (next_val==val) {
alert("same value");
}
next_val=val;
});
请记住next_val
实际上是以前的值......
答案 2 :(得分:0)
只有当前输入的所有值都具有相同的值 时才会生效 jQuery代码
var arr = [];
$('.order').change(function () {
arr.push($(this).val());
if (arr.length > 1) {
if (arr.AllValuesSame()) alert("Values are same");
}
var val = 0;
$.each(arr, function () {
val = parseInt(val) + parseInt(this);
});
$('.val').text(val);
});
Array.prototype.AllValuesSame = function () {
if (this.length > 0) {
for (var i = 1; i < this.length; i++) {
if (this[i] !== this[0]) return false;
}
}
return true;
}
在this answer的帮助下制作了@Robert