Код javascript, который у меня есть, правильно отображает и обновляет частичные совпадения из массива, который я передаю, когда пользователь вводит текст в строку поиска. Итак, функциональность того, что я хочу, работает.
Но он отображает совпадения только тогда, когда у меня есть "console.log(allLIDsCodes[0]['LID']" внутри моей функции javascript. Это также работает, если вместо этого у меня есть другой порядковый номер ключа "Код", но это не сработает, если в console.log будет случайная строка, например "key".
Кроме того, хотя поиск и отображение результатов выполняются правильно, я все равно получаю эту ошибку в консоли. Есть идеи?
ошибка
searchLIDsCodes.js:21 Uncaught TypeError: Cannot read property 'Code' of undefined
at HTMLFormElement.<anonymous> (searchLIDsCodes.js:21)
at HTMLFormElement.dispatch (jquery-1.12.4.js:5226)
at HTMLFormElement.elemData.handle (jquery-1.12.4.js:4878)
(anonymous) @ searchLIDsCodes.js:21
dispatch @ jquery-1.12.4.js:5226
elemData.handle @ jquery-1.12.4.js:4878
charts.php (нижняя часть)
<!-- pass session arrays $allFIDs and $allLIDsCodes to javascript -->
<script>
var js_$allFIDs = <?php echo json_encode($_SESSION['allFIDs']); ?>;
var js_$allLIDsCodes = <?php echo json_encode($_SESSION['allLIDsCodes']); ?>;
</script>
<!-- selector for exp fund chart -->
<form id="expLid" method="POST">
<input id="expLidInput" type="text" name="expLid" autofocus="autofocus"></input>
<input type="hidden" name="FID" value="<?php echo $FID; ?>"></input> <!-- $FID must be passed as hidden variable so that it can be appended to url in c_session.php file -->
<button type="submit">Set Exp Lid</button>
<br>
<!-- use this span element to display search results -->
<span id="searchLIDsCodesAppend"></span>
</form>
</div> <!-- page -->
<script>
onload=searchLIDsCodes(js_$allLIDsCodes);
</script>
</body>
</html>
searchLIDsCodes.js
//#region
// http://jsfiddle.net/BeNdErR/f5use/5/
$(document).ready(function () {
document.getElementById("expLidInput").addEventListener("keyup", searchLIDsCodes);
}); // end $(document).ready(function () {
function searchLIDsCodes(allLIDsCodes) {
// start $("#expLid").on("keyup", function() {
$("#expLid").on("keyup", function () {
// *** search results don't display if I just have this
// console.log("key");
// *** search results display for either of these two lines but give the error in the console
// console.log(allLIDsCodes[0]['LID']);
console.log(allLIDsCodes[0]['Code']);
$("#searchLIDsCodesAppend").empty();
var searchValue = $("#expLidInput").val().toLowerCase();
if(searchValue != ""){
for(var x = 0; x < allLIDsCodes.length; x++){
if((allLIDsCodes[x]['LID'].indexOf(searchValue) == 0 ) || (allLIDsCodes[x]['Code'].toLowerCase().indexOf(searchValue) == 0 )){
$("#searchLIDsCodesAppend").append(allLIDsCodes[x]['LID'] + " " + allLIDsCodes[x]['Code'] + "<br>");
} // end if((allLIDsCodes[x]['LID'].indexOf(searchValue) == 0 ) || (allLIDsCodes[x]['Code'].toLowerCase().indexOf(searchValue) == 0 )){
} // end for(var x = 0; x < allLIDsCodes.length; x++){
} // end if(searchValue != ""){
}); // end $("#expLid").on("keyup", function () {
}; // end function searchLIDsCodes(allLIDsCodes) {
//#endregion