我有一张桌子。有些行是由jquery动态添加的。
每行的第一个<td>
都有一个<input type="text" />
元素。使用jQuery,是否可以检查所有这些输入元素是否具有唯一值?
答案 0 :(得分:6)
Nick的解决方案具有O(n 2 )的复杂性。这是一个优化的例子。
函数isUnique
确定所需的结果。
<script src="jquery.js" />
<script>
function isUnique( tableSelector ) {
// Collect all values in an array
var values = [] ;
$( tableSelector + ' td:first-child input[type="text"]' ).each( function(idx,val){ values.push($(val).val()); } );
// Sort it
values.sort() ;
// Check whether there are two equal values next to each other
for( var k = 1; k < values.length; ++k ) {
if( values[k] == values[k-1] ) return false ;
}
return true ;
}
// Test it
$(document).ready(function(){
alert( isUnique( ".myTable" ) ) ;
});
</script>
<table class="myTable">
<tr><td><input type="text" value="1" /></td></tr>
<tr><td><input type="text" value="2" /></td></tr>
</table>
答案 1 :(得分:4)
您可以使用数组和jQuery .inArray function这样:
var vals = new Array();
$("td:first-child input").each(function() {
if($.inArray($(this).val(), vals) == -1) { //Not found
vals.push($(this).val());
} else {
alert("Duplicate found: " + $(this).val());
}
});
如果您正在重复使用,请务必在第二次通过前清除val。