.cl()之后的.clone()用于验证函数

时间:2016-03-15 20:32:49

标签: javascript jquery clone each

我正在使用jquery验证,但没有选项来检查错误类型。

因为我正在尝试构建自己的验证函数,但是在克隆一行之后,我正在努力让每个函数都能正常工作。

它始终返回第一个选择框的相同数据。

我已经制作了一个jsfidlle来详细了解这个问题:https://jsfiddle.net/notify/b22dctdo/

我想要实现的是,如果选择框上有重复的值,我会生成带有错误消息的div。

也许我正朝着错误的方向前进,但希望有人能指出我正确的方向。 我想使用函数inputsHaveDuplicateValues我已经找到并创建了一个测试函数,它返回数据索引号以便更好地查看。

function inputsHaveDuplicateValues() {
  var hasDuplicates = false;
  $('li.selected').each(function() {
    var $inputsWithSameValue = $(this).data("original-index");
    hasDuplicates = $inputsWithSameValue.length > 1;
    //This will break out of the each loop if duplicates have been found.
    return hasDuplicates;
  });
  return hasDuplicates;
};

非常感谢提前调查此事。

1 个答案:

答案 0 :(得分:1)

$(this).data("original-index")返回一个数字,而不是jQuery对象。我想你想要filter一组下拉列表。

此外,你通过返回false而不是真实来突破.each()

function test() {
  $("ul.inner").each(function(index, element) {
    alert("Test Function -> " + $("li.selected",this).data("original-index"));
  });
};

function inputsHaveDuplicateValues() {
  var hasDuplicates = false;
  $('li.selected').each(function() {
    var originalIndex = $(this).data("original-index"),
      $inputsWithSameValue = $("ul.inner").filter(function() {
        return $('li.selected',this).data('original-index') == originalIndex;
      });
    hasDuplicates = $inputsWithSameValue.length > 1;
    //This will break out of the each loop if duplicates have been found.
    return !hasDuplicates;
  });
  return hasDuplicates;
};

// on button check
$("#check").click(function(event) {
  test()
  alert("Duplicate function -> " + inputsHaveDuplicateValues());
});

https://jsfiddle.net/op93cbyz/