如果textbox在jquery中具有相同的值,则进行验证

时间:2014-06-06 06:24:47

标签: javascript jquery

我正在尝试执行此操作,如果用户为两个不同的框选择相同的值,我必须显示一些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

3 个答案:

答案 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);
      }

});

您可以使用 arrays 来维护值。要检查是否存在值,请使用 inArray()

答案 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实际上是以前的值......

小提琴http://jsfiddle.net/phZaL/8/

答案 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;
}

Demo Fiddle

  

this answer的帮助下制作了@Robert