我使用简单的JQUERY Autocomplete来显示某些记录的重复项,例如当用户填写文本字段时的名称或地址。
这里是代码
<script type="text/javascript">
$(function() {
var availableTags = <?php include('ajax/ajax_show.php'); ?>;
$("#name_value").autocomplete({
source: availableTags,
autoFocus:true
});
});
</script>
在文本下方显示结果。
Name[____________________]
Paul - 121.456.789-00
Robert - 122.456.789-00
Cid - 123.456.789-00
如何删除-
(空格连字符空格)之后的所有内容及其后面的所有内容,并且只有像Paul,Robert或Cid这样的文本域名?
答案 0 :(得分:1)
如果您无法更改ajax/ajax_show.php
以按照您希望的方式提供数据,那么可以使用RegEx并使用javascript替换-
之后的所有内容。
$(function() {
var availableTags = <?php include('ajax/ajax_show.php'); ?>;
$("#name_value").autocomplete({
source: availableTags.map(function(v) { return v.replace(/(^[^-]*) .*/, '$1') }),
autoFocus:true
});
});
基本上,此解决方案使用map
函数迭代所有元素,并使用元素&#34; clean&#34;创建 new array
。起来。
方法replace
将使用正则表达式(^[^-]*) .*
来抓取破折号前的所有内容。
如果你想要更具体的东西,你可以使用正则表达式,另一个可行的例子是:/^(.*) - .*$/
答案 1 :(得分:1)
如果可能的话,我认为最好将你的数据从ajax_show.php作为json返回,例如:
[
{
"value": "121.456.789-00",
"label": "Paul"
},
{
"value": "122.456.789-00",
"label": "Robert"
},
...
]
然后,如此处的jQuery UI文档所示:https://jqueryui.com/autocomplete/#custom-data(在“自定义数据和显示”标签下),它只会使用名称作为标签,但您仍然可以访问ID (值属性)。
另外好消息是,您传递数据的方式(通过将其分配给'source'属性)根本不需要更改。
答案 2 :(得分:1)