[英]Autocomplete Jquery remove everything after ' - '
我使用简单的JQUERY自动完成功能来显示某些记录的可能重复项,例如用户填写文本字段时的名称或地址。
这里的代码
<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之类的名称?
如果您无法更改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
函数迭代所有元素,并使用“清除”的元素创建一个新 array
。 方法replace
将使用正则表达式(^[^-]*) .*
来获取破折号之前的所有内容。
如果需要更具体的信息,可以使用正则表达式,另一个可行的示例是:/ /^(.*) - .*$/
如果可能的话,我认为最好从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'属性)根本不需要改变。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.