我有一个具有id =“ autocomplete-input”的简单输入字段和一个具有id =“ searchButton”的按钮。然后,我将PHP数组与键值对结合使用,以便您可以在输入字段中键入一个值,然后为该值找到正确的键。我为此使用javascript,因此还需要将PHP数组转换为javascript。请在下面查看我的代码:
<nav>
<div class="nav-wrapper">
<div class="input-field center-align">
<input type="text" class="autocomplete" name="search" id="autocomplete-input" placeholder="Search.." />
<button class="icon" id="searchButton"></button>
</div>
</div>
</nav>
<?php
$testArray = array (
'yellow' => 'banana',
'red' => 'apple',
'green' => 'pear'
);
?>
$('document').ready(function(){
$('#searchButton').click(function(){
var compSearch = document.getElementById('autocomplete-input').value;
var tempArray = <?php echo json_encode($testArray); ?>;
var key = search(compSearch, tempArray);
document.getElementById("autocomplete-input").value = (key);
})
$('#searchButton').keypress(function(e){
if(e.which == 13){ //Enter key pressed
$('#searchButton').click(); //Trigger search button click event
}
});
});
function search(nameKey, myArray){
for (var i=0; i < myArray.length; i++) {
if (myArray[i].name === nameKey) {
return myArray[i];
}
}
}
无论输入什么,单击searchButton都只会返回“ undefined”。我不确定这是否是无法正常运行的“搜索”功能-我认为$ testArray的json_encode也可能会引起问题?非常感谢您的帮助。
答案 0 :(得分:2)
tempArray
将不是一个数组(*),而是一个普通对象,如下所示:
{
yellow: 'banana',
red: 'apple',
green: 'pear'
}
*只有被索引数组(从索引0开始并且没有间隔)的PHP数组才能转换为JS数组。否则,它们会转换为普通对象。
所以search
应该看起来像这样的衬纸:
return myArray[nameKey];
...但是可能选择一个更好的变量名,因为它不是数组。