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,然后 keyup 事件不允许我使用 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 回答