0

我是 web 开发和 jQuery 的新手。我有输入元素与模糊事件绑定。

这是我的代码:

// this are my input elements:
<input class="input_name" value="bert" />
<input class="input_name" value="king kong" />
<input class="input_name" value="john" />
<input class="input_name" value="john" />

<script>

    $(".input_name").bind("blur",function(){
          alert(findDuplicate($(this).val()));
    })

    function findDuplicate(value){
          var result = 0;
          $(".input_name").each(function{
                 if($(this).val == value){
                        result++;
                 }
          });
    }

</script>

我的主要问题是当我将 bert 更改为 john 时,它会返回 3 个结果。我将如何免除事件发送者的检查?

4

3 回答 3

2

就像其他人提到的那样,您有一些语法错误。此外,您可以让 jQuery 使用选择器为您找到它们,而不是显式地遍历所有输入:

$(".input_name").bind("blur",function(){
    alert(findDuplicate($(this).val()));
})

function findDuplicate(value){
    return $(".input_name[value='" + value + "']").length - 1;
}
于 2013-09-30T15:20:33.840 回答
1
$(".input_name").bind("blur", function () {
    alert(findDuplicate(this.value));
})

function findDuplicate(value) {
    var result = 0;
    $(".input_name").each(function(){
        if (this.value == value) {
            result++;
        }
    });
    return result - 1;
}

演示

于 2013-09-30T15:24:40.767 回答
0

试试这个(未经测试):

$(".input_name").bind("blur",function(){
    var nth = $(this).index();
    alert(findDuplicate($(this).val(),nth));
})

function findDuplicate(value,nth){
      var result = 0;
      $(".input_name").each(function{
             if($(this).val == value && nth != index){
                    result++;
             }
      });
      return result;
}
于 2013-09-30T15:22:40.950 回答