【问题标题】:validation in if textbox having same values in jquery如果文本框在 jquery 中具有相同的值,则验证
【发布时间】:2014-06-06 06:24:46
【问题描述】:

我正在尝试执行此操作,例如如果用户为两个不同的框选择相同的值,我必须显示一些错误。我的文本框代码如下。

<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

【问题讨论】:

  • 你的小提琴中没有包含 jquery
  • 你的输入标签也没有关闭

标签: javascript jquery


【解决方案1】:

试试这个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()

【讨论】:

    【解决方案2】:

    您需要将更多代码放入.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/

    【讨论】:

      【解决方案3】:

      这只有在到目前为止输入的所有值都具有相同值时才有效
      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

      在@Robert 的 this answer 的大力帮助下制作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-22
        • 2015-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多