我正在使用此代码检查数组中的重复值:
<?php
$return_arr = array();
$sql="SELECT * from customer where company <> '' group by company ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
while($result=mysql_fetch_array($rs)) {
$return_arr[] = $result["company"];
}
$data = json_encode($return_arr);
?>
<script type="text/javascript">
$(document).ready(function(){
$("#ViewExistingCustomer").hide();
var company_array = <?php echo $data; ?>;
$('#company').on('keyup',function() {
if($.inArray($(this).val(), company_array) !== -1) {
$("#ViewExistingCustomer").attr("href", "customers?seq=");
alert("This company name already exists on another customer.");
}
});
});
</script>
我试图让它做两件额外的事情,我想检查数组中的值,无论它是什么情况以及输入的是什么情况。
此外,MySQL表格中有一个sequence
,如何将其添加到我的href
编辑代码行中,以便它显示?seq=
然后在= {之后}它将是相关的来自数据库/数组的sequence
答案 0 :(得分:1)
您可以为每个使用a并将两个值转换为小写,然后比较它们。如果$ return_arr分别将公司名称和序列存储在索引0和1中,如下所示,
readLines
然后,
$return_arr[0] = ["company_name_1", "sequence"];
$return_arr[1] = ["company_name_2", "sequence"];
$return_arr[2] = ["company_name_3", "sequence"];
答案 1 :(得分:0)
您可以将值转换为小写并检查它是否存在于数组中的某个位置,但您必须至少迭代其中的一些。
var duplicates = company_array.some(function(val){
return val.toLowerCase()===$(this).val().toLowerCase();
});
if(duplicates){...}
答案 2 :(得分:0)
您希望使用JavaScript .map()
方法将数组中的每个元素转换为小写或大写,然后使用JavaScript数组方法.indexOf()
来检查值。您还希望将刚接受的值添加到数组中或刷新数组,这样您就不会多次添加该值:
$('#company').on('keyup',function() {
var lArr = company_array.map(function(elm) {
return elm.toLowerCase();
});
if( lArr.indexOf( this.value.toLowerCase() ) !== -1) {
$("#ViewExistingCustomer").attr("href", "customers?seq=");
alert("This company name already exists on another customer.");
} else {
company_array.push( this.value );
//or do a post to add it and refresh company_array
}
});
注意即可。不确定keyup
是否是用于触发支票的适当事件。可能input
可能是一个更好的事件。