我有一个html文本框,它使用jQuery UI中的javascript自动完成功能 - v1.11.4。文本框的建议字符串是数据库中表格的多个列(patient_no,patient_name,age和residence)的串联。我想截断部分字符串,因为我只需要在我的文本框中放置patient_no列。
可能的文字建议:' 00032>>汤姆迈克尔>> 14yrs>>兰
我想要放在文本框中的内容:' 00032 '
以下是我的代码
//html
<input name="patientNo" id="patientNo" type="text" />
//autocomplete.php
$pat_no_seq_result = pg_query("SELECT patient_no || ' >> ' || surname || ' ' || other_name || ' >> ' || (current_date-year_of_birth)/365 || 'yrs' || ' >> '||residence FROM hp_outpatient_register;");
$dname_list = array();
while ($row = pg_fetch_row($pat_no_seq_result)) {
$dname_list[] = $row[0] ;
}
//javascript
<script type="text/javascript">
$(function() {
var availableTags = <?php include('autocomplete.php'); ?>;
$("#patientNo").autocomplete({
source: availableTags,//autoFocus: true
select: function(event, ui) {
getPatientNo(ui.item.value);
}
});
function getPatientNo(value) {
var patNo = value.substring(0, value.indexOf(' '));
document.getElementById("patientNo").value = patNo;
}
});
</script>
在将其放入文本字段之前,是否有任何方法可以截断用户选择的字符串。如果有更好的方式,我建议。
答案 0 :(得分:0)
我解决了类似问题,但我的服务器端是Django。我没有使用过PHP,但我假设您可以返回具有以下结构的列表对象:
var label = $.rowpatientNo + ' >> ' + $row.surname + ' >> ' + ' ' + $row.other_name + ' >> ' + $row.age;
//Structure
{'id': $row.patientNo, 'label': label, 'value': $row.patientNo}
“标签”是您希望在建议中显示的内容,“值”是您在选择建议后要在文本框中显示的内容。
必须使用current_date和year_of_birth字段在查询中或查询后格式化年龄。