如何在自动完成中用空格替换下划线?
How do I replace underscores with spaces in autocomplete?
我正在使用 jquery-ui 创建搜索下拉列表,但我想在下拉结果中用空格替换下划线。
我已经在源代码上尝试了 .replace,但它似乎不起作用。
下面是我的自动完成代码。我如何在上面使用 .replace(/_/g, " ")
?
谢谢。
$(document).ready(function(){
var alls = $.each([
'Dr._Peppins',
'Spain',
'index',
],
$( "#userInput" ).autocomplete({
source: alls
});
});
试试这个:
source: alls.replace("_", " ");
考虑以下因素。
$(function() {
var alls = [
'Dr._Peppins',
'Spain',
'index',
];
function undScore2Space(word) {
return word.replace("_", " ");
}
function filterArray(arr) {
$.each(arr, function(i, e) {
arr[i] = undScore2Space(e);
});
return arr;
}
$("#userInput").autocomplete({
source: function(req, resp) {
var results = $.ui.autocomplete.filter(alls, req.term);
resp(filterArray(results));
}
});
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.13.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js"></script>
<div class="ui-widget">
<label for="userInput">Input: </label>
<input id="userInput">
</div>
在您的示例中,您执行了 Each。此格式不正确,应该会产生错误。
In the case of an array, the callback is passed an array index
and a corresponding array value
each time. (The value can also be accessed through the this
keyword, but Javascript will always wrap the this
value as an Object even if it is a simple string or number value.) The method returns its first argument, the object that was iterated.
所以您不想对数组中的每个项目初始化自动完成。如果你愿意,你可以修改每个部分,但是如果你希望源包含这些字符,最好在查找后将它们过滤掉。
您可以使用 source
的函数并以这种方式执行事件。
您还可以执行以下操作:
$(document).ready(function(){
var alls = [];
$.each([
'Dr._Peppins',
'Spain',
'index'
], function(index, elem){
alls.push(elem.replace("_", " "));
});
$("#userInput").autocomplete({
source: alls
});
});
我正在使用 jquery-ui 创建搜索下拉列表,但我想在下拉结果中用空格替换下划线。 我已经在源代码上尝试了 .replace,但它似乎不起作用。
下面是我的自动完成代码。我如何在上面使用 .replace(/_/g, " ")
?
谢谢。
$(document).ready(function(){
var alls = $.each([
'Dr._Peppins',
'Spain',
'index',
],
$( "#userInput" ).autocomplete({
source: alls
});
});
试试这个:
source: alls.replace("_", " ");
考虑以下因素。
$(function() {
var alls = [
'Dr._Peppins',
'Spain',
'index',
];
function undScore2Space(word) {
return word.replace("_", " ");
}
function filterArray(arr) {
$.each(arr, function(i, e) {
arr[i] = undScore2Space(e);
});
return arr;
}
$("#userInput").autocomplete({
source: function(req, resp) {
var results = $.ui.autocomplete.filter(alls, req.term);
resp(filterArray(results));
}
});
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.13.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js"></script>
<div class="ui-widget">
<label for="userInput">Input: </label>
<input id="userInput">
</div>
在您的示例中,您执行了 Each。此格式不正确,应该会产生错误。
In the case of an array, the callback is passed an array
index
and a corresponding arrayvalue
each time. (The value can also be accessed through thethis
keyword, but Javascript will always wrap thethis
value as an Object even if it is a simple string or number value.) The method returns its first argument, the object that was iterated.
所以您不想对数组中的每个项目初始化自动完成。如果你愿意,你可以修改每个部分,但是如果你希望源包含这些字符,最好在查找后将它们过滤掉。
您可以使用 source
的函数并以这种方式执行事件。
您还可以执行以下操作:
$(document).ready(function(){
var alls = [];
$.each([
'Dr._Peppins',
'Spain',
'index'
], function(index, elem){
alls.push(elem.replace("_", " "));
});
$("#userInput").autocomplete({
source: alls
});
});