У меня есть форма, в которой есть опция выбора и текстовое поле. Все, что я хочу сделать, это когда я выбираю конкретную опцию, она передает идентификатор для запроса той же таблицы, чтобы получить значение другого столбца на основе идентификатора выбранной опции, а затем отображать значение в текстовом поле перед вставкой / обновлением таблицы.
Этот код будет работать, если оба поля в моей форме используют поле выбора. Так что, на мой взгляд, возможно, мой скрипт для хранения значения в текстовом поле ввода полностью неправильный. Пожалуйста, поправьте меня, если я ошибаюсь.
Мой код формы:
<form name = "inserform" method = "POST">
<label>Existing Customer Name : </label>
<select name = "existCustName" id = "existCustName">
<option value = "">None</option>
<?php
$custName = $conn->query("SELECT * FROM customers");
while ($row = $custName->fetch_assoc())
{
?><option id = "<?php echo $row['customerID']; ?>" value = "<?php echo $row['customerID']; ?>"><?php echo $row['customerName']; ?></option><?php
}
?>
</select>br>
<label>Current Bottle Balance : </label>
<input type = "int" id = "currentBal" name = "currentBal"></input><br>
<input name = "insert" type = "submit" value = "INSERT"></input>
</form>
Мой код скрипта:
<script type = "text/javascript">
$(document).on("change", 'select#existCustName', function(e) {
var existCustID = $(this).children(":selected").attr("id");
$.ajax({
type: "POST",
data: {existCustID: existCustID},
url: 'existingcustomerlist.php',
dataType: 'json',
success: function(json) {
var $el = $("input#currentBal");
$el.empty();
$.each(json, function(k, v) {
$el.append("'input[value='" + v.currentBal + "']").val();
});
}
});
});
</script>
существующий код клиента list.php:
<?php
include 'config/config.php';
$result = $conn->query("SELECT * FROM customers WHERE customerID = '" .$_POST['existCustID'] . "'");
$results = [];
while ($row = $result->fetch_assoc()) {
$results[] = $row;
}
header('Content-Type: application/json');
echo json_encode($results);
?>
Мне нужна помощь, чтобы решить эту проблему.






Я предполагаю, что вы пытаетесь показать результаты как текстовый элемент ввода рядом с элементом #currentBal. Попробуйте изменить тег скрипта внутри успешного обратного вызова, как показано ниже.
$.each(json, function (k, v) {
$el.after("<input type='text' class = "currentBalTemp" value='" + v.currentBal + "' />");
});
Обязательно удалите элементы .currentBalTemp при изменении события выбора, иначе будет отображаться дублирование. Добавьте приведенный ниже код при изменении события.
$('.currentBalTemp').remove();
Я не совсем уверен, что это правильный синтаксис для хранения значения для ввода текстового поля, потому что я сделал аналогичный этому синтаксису, но до сих пор не нашел решения. Если я не ошибаюсь, возможно, мой код полностью неправильный, начиная со строки «success: function (json) до конца строки скрипта».