У меня есть автозаполнение, но как я могу обрабатывать изменения?
Что происходит, когда пользователь изменяет исходный выбор? У меня есть автозаполнение, когда при выборе листинга заполняются другие поля. Если пользователь выбирает листинг, он пытается изменить его на то, что является новым (ничего не соответствует в нашей БД), другие поля должны быть очищены.
Другой способ задать вопрос: как мне обрабатывать «новые» списки?
Мой код ниже
$(function() { $( "#oName" ).autocomplete({ source: "include/organizerList.php", minLength: 3, select: function( event, ui ) { $("input#oID").val(ui.item.oID); $("input#oCID").val(ui.item.oCID); $("div#organCity").text(ui.item.oCity); $("div#organCountry").text(ui.item.oCountry); } }); });
organizerList.php
// important to set header with charset header('Content-Type: text/html; charset=utf-8'); $term = htmlspecialchars(strtolower($_GET["term"])); $return = array(); $query = mssql_query("SELECT CID, oID, oName, oCity, oCountry FROM TradeShowDB_Organizers WHERE oName LIKE '%$term%'"); while ($row = mssql_fetch_array($query)) { array_push($return,array( 'oCID'=>$row['CID'], 'oID'=>$row['oID'], 'label'=>$row['oName'] . ', ' . $row['oCity'], 'value'=>$row['oName'], 'oCity'=>$row['oCity'], 'oCountry'=>$row['oCountry'] )); } // encode it to json format echo(json_encode($return));
Мой html:
<input type="text" tabindex='20' id="oName" name="oName" size="60" maxlength="200" value="<?php echo $oName; ?>"> <div id='organCity'></div> <div id='organCountry'></div> <input type="hidden" id="oID" name="oID" value="<?php echo $oID; ?>"> <input type="hidden" id="oCID" name="oCID" value="<?php echo $oCID; ?>">
Вы можете использовать событие select
автозаполнения http://jqueryui.com/demos/autocomplete/#event-select
Отключите вход, как только пользователь выберет опцию
$("#oName").autocomplete({ source: "include/organizerList.php", minLength: 3, select: function (event, ui) { this.value = ui.item.value; $('#autocomplete').autocomplete("disable"); $('#autocomplete').trigger('keypress'); //needed to fix bug with enter on chrome and IE $(this).attr('disabled','disabled'); return false; }, autoFocus: true });
Затем в скрипте на стороне сервера вы можете проверить ввод, чтобы узнать, существует ли в базе данных значение.