.each() 在 .clone() 之后用于验证功能

.each() after a .clone() for validation function

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

因此,我正在尝试构建自己的验证函数,但在克隆一行后,我很难让每个函数正常工作。

它总是returns与第一个select离子盒的相同数据。

我已经制作了一个 jsfidlle 以获取有关该问题的更多详细信息:https://jsfiddle.net/notify/b22dctdo/

我想要实现的是,如果 select 框上有重复值,我会生成 div 并显示错误消息。

也许我看错了方向,但希望有人能指出我正确的方向。 我想使用我发现的函数 inputsHaveDuplicateValues 并制作了一个测试函数 returns 数据索引号以便更好地查看。

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;
};

非常感谢您对此的调查。

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

此外,您通过返回 false 而不是 true 来突破 .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/