2016-03-15 54 views
0

我正在使用jquery驗證,但沒有選項來檢查錯誤類型。.each()用於驗證功能後的.clone()

因此,我正在嘗試構建自己的驗證函數,但在克隆一行之後,我正努力讓每個函數都能正常工作。

它始終以第一個選擇框的相同數據返回。

我已經做了jsfidlle有關該問題的更多詳細信息:https://jsfiddle.net/notify/b22dctdo/

我想實現的是,如果在選擇盒,我產生一個錯誤信息股利重複值。

也許我在尋找錯誤的方向,但希望有人能指出我正確的方向。 我想使用函數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

$(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/

+0

謝謝,我是新來的jQuery,這正是我要找的。 – notify