Я пытаюсь установить значение поля productID, выполнив поиск по названию продукта. Поиск возвращает правильные результаты и отображает их, но при нажатии значение устанавливается так, как если бы оно было числом.

Например, это то, что возвращается при поиске ...

pID: "<a class='result' onclick='setID(0001-001-004)' href='#'>Product Code=0001-001-004, White Folding Chair</a>"

При нажатии на приведенный ниже результат значение ввода устанавливается как -4. Если возвращенное число было 0001-002-005, оно устанавливается на -5.

Код для функции setID:

function setID(pID) {
    var prodCode=toString(pID);     
    $('input#productCode').val(pID);
    var clear="";
    $('div#suggestions').html(clear);
    $('div#suggestions').hide(); 

}  

Кто-нибудь знает, как я могу это сделать. Я не могу вернуть идентификатор между двойными или одинарными кавычками, потому что это PHP, который возвращает результат. как вы увидите, использование двойных и одинарных кавычек не оставляет мне никакого способа сделать это таким образом ...

$array[] = array (
        "pID" =>"<a class='result' onclick='setID(".$row['ITEMNO'].")' href='#'>Product Code=". $row['ITEMNO'].", " .$row['ITEMDESC']."</a>"
    );
1
AKAust 27 Фев 2018 в 18:54

3 ответа

Лучший ответ

Вам не хватает двойных кавычек вокруг вашего значения в setID():

"pID" =>"<a class='result' onclick='setID(\"".$row['ITEMNO']."\")' href='#'>Product Code=". $row['ITEMNO'].", " .$row['ITEMDESC']."</a>"

Потому что значения интерпретируются как числа: 0001-002-005 = 1-2-5 = -6
вместо "0001-002-005", который является строкой.

Или используя одинарные кавычки (чтобы использовать двойные кавычки в HTML):

"pID" => '<a class="result" onclick="setID(\''.$row['ITEMNO'].'\')" href="#">Product Code='. $row['ITEMNO'].', ' .$row['ITEMDESC'].'</a>'
1
Syscall 27 Фев 2018 в 16:08

при нажатии значение устанавливается так, как будто это число

Потому что в JS вы установили его как число, но вам нужно установить его как строку:

<a class='result' onclick='setID("0001-001-004")'>Product Code=0001-001-004, White Folding Chair</a>
1
Dormilich 27 Фев 2018 в 15:58

Вы должны добавить одинарные кавычки вокруг конкатенации, как это

$array[] = array (
        "pID" =>"<a class='result' onclick='setID(\'".$row['ITEMNO']."\')' href='#'>Product Code=". $row['ITEMNO'].", " .$row['ITEMDESC']."</a>"
    );
1
chinloyal 27 Фев 2018 в 16:11