0

私は次のコードを実装しました:(ここの例http://jsfiddle.net/MvWV7/3/

  $(".activity_order").keyup(function() {
    var $t = $(this)
    $.map($(".activity_order").not("#"+$t.attr("id")), function(t) {
      if(t.value === $t.val() && $t.val() != ""){
        console.log("number already taken")
        $t.val("")
      }
    })
  })

入力が10を超えるまではすべて期待どおりに機能し、その後、キーアップイベントで2桁の数字を使用できませんでした。

私が考慮している解決策はタイムアウトを追加することですが、それが最善の方法かどうかはわかりません。たぶん、私が見逃している何かがあり、そのタイムアウトなしでこれを実現することができます。

前もって感謝します

4

1 に答える 1

2

関数を使用できsetTimeoutます。

var t = '';
$(".activity_order").keyup(function () {
    var self = this;
    clearTimeout(t);
    t = setTimeout(function () {
        $(".activity_order").not(self).each(function (t) {
            if (this.value === self.value && self.value != "") {
                // alert("El número ya ha sido tomado")
                self.value = ""
            }
        })
    }, 280);
});

http://jsfiddle.net/zhdez/

于 2013-02-25T01:36:29.163 に答える