.each() 在 .clone() 之后用于验证函数

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

本文关键字:验证 函数 用于 clone each 之后      更新时间:2023-09-26

我正在使用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;
};

非常感谢提前调查此事。

$(this).data("original-index")返回一个数字,而不是一个jQuery对象。我认为您想过滤下拉列表集。

此外,你通过返回 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/