是我的自动填充文本框代码..
代码工作正常..
但我还需要在隐藏文本框中存储所选值的ID ..
FOR EX =
我的自动文本框中有2个值
id societyname
7 raj
15 lucky
好的,如果我从上面的值中选择raj然后显示raj的id,即隐藏文本框中的7
任何人帮助我。
自动填充文本框
<input id="society_name" name="society"/>
<input type="hidden" id="society_name" name="societyid"/>
在ajax.php
if($_GET['type'] == 'society'){
$result = mysql_query("SELECT society FROM societymaster where society LIKE '".strtoupper($_GET['name_startsWith'])."%'");
$data = array();
while ($row = mysql_fetch_array($result)) {
array_push($data, $row['society']);
}
echo json_encode($data);
}
auto.js
$('#society_name').autocomplete({
source: function( request, response ) {
$.ajax({
url : 'ajax.php',
dataType: "json",
data: {
name_startsWith: request.term,
type: 'society'
},
success: function( data ) {
response( $.map( data, function( item ) {
return {
label: item,
value: item
}
}));
}
});
},
autoFocus: true,
minLength: 0
});
答案 0 :(得分:0)
在输入上使用val()函数传递来自ajax结果的id
$('#society_name').val(data.id);
更新代码:
PHP:
if($_GET['type'] == 'society'){
$result = mysql_query("SELECT id,society FROM societymaster where society LIKE '".strtoupper($_GET['name_startsWith'])."%'");
$data = array();
while ($row = mysql_fetch_array($result)) {
array_push($data,$row);
}
echo json_encode($data);
}
JS:
$('#society_name').autocomplete({
source: function( request, response ) {
$.ajax({
url : 'ajax.php',
dataType: "json",
data: {
name_startsWith: request.term,
type: 'society'
},
success: function( data ) {
$('#society_name').val(data[0].id);
response( $.map( data, function( item ) {
return {
label: item,
value: item
}
}));
}
});
},
autoFocus: true,
minLength: 0
});
答案 1 :(得分:0)
如果你需要ID,那么从DB获取它们并返回ajax调用(我猜这是你正在谈论的ID)。 从这一点开始,你可以使用类似的东西,将返回的结果缓存在例如关联数组: $ arr [value] = id; 如果用户选择其中一个值,您可以获得相应的ID。 这是我猜的一种方法。
顺便说一句。 一些未来的提示: 1. id的字段应该具有唯一值。 2.您应该考虑保护您的查询免受SQL攻击。在这里,您甚至无法转义用户提供的字符串。 3.据我记得,mysql已经过时,所以请尝试使用mysqli。
<强> ajax.php 强>
if($_GET['type'] == 'society'){
// try to switch to mysqli. You can also consider prepare statements.
$result = mysql_query("SELECT id, society FROM societymaster where society LIKE '".mysql_real_escape_string(strtoupper($_GET['name_startsWith']))."%'");
$data = array();
while ($row = mysql_fetch_array($result)) {
array_push($data, $row);
}
// mysql_fetch_array returns indexed array so we should get JSON string like: "[['id1', 'value1'], ['id2', 'value2'], ...]"
echo json_encode($data);
}
.js文件
$.arr = [];
$('#society_name').autocomplete({
source: function( request, response ) {
$.ajax({
url : 'ajax.php',
dataType: "json",
data: {
name_startsWith: request.term,
type: 'society'
},
success: function( data ) {
// clear cache array and fill it with information about the new results (societies and corresponding ids)
$.arr = [];
$.each(data, function (idx, item) {
$.arr[item[1]] = item[0];
});
$('#society_name').val(data[0].id);
response( $.map( data, function( item ) {
return {
label: item,
value: item
}
}));
}
});
},
autoFocus: true,
minLength: 0
});
// catch an event when the autocomplete closes and get id for selected society name
$("#tags").on("autocompleteclose", function() {
// close event does not provide object data so we must fetch it again
var selectedValue = $("#tags").val();
var id = $.arr[selectedValue];
// now you can set this ID as the value of your hidden input
});