自动完成小部件 (jQuery UI) - 为什么换行?
我在使用自动完成小部件时遇到一些问题。当您选择一个选项时,项目值的前缀是换行符和一些空格。结果如下:
Object { label="\n bedroom", value="\n bedroom"}
我不知道为什么会发生这种情况,也许这是我设置数组以从中获取值的方式?这是我的代码:
$("#step2").show(0, function() {
/*tags auto-complete*/
var tags = $('span', $('#liTags')).text();
var availableTags = tags.split(' ;');
$(".liTagInput").autocomplete({
minLength: 2,
source: availableTags,
select: function(event, ui) {
var value = ui.item;
console.log(value);
console.log(jQuery.inArray(value, availableTags));
if(jQuery.inArray(value, availableTags) >= 0)
$(this).val('');
}
});
});
如果您想知道我在这里要做什么(由于换行符,我尚未测试),我将从 HTML 端的 span 元素获取标签,然后拆分这些标签到一个数组(availableTags
)中。
然后我想要发生的是,一旦用户在文本框中输入一些内容,如果它不是他/她从自动完成菜单中选择的内容,那么文本字段的值应该被清除(我也可能会显示他们会收到一个警告,告诉他们从菜单中进行选择,但我们现在先保留它)。
有什么想法吗?
I'm having some issues with the autocomplete widget. When you choose an option, the item value is prefixed with a line break and some whitespace. Here's how the result shows up:
Object { label="\n bedroom", value="\n bedroom"}
I donno why that is happening, maybe it's the way I'm setting up the array to get the values from? Here's my code:
$("#step2").show(0, function() {
/*tags auto-complete*/
var tags = $('span', $('#liTags')).text();
var availableTags = tags.split(' ;');
$(".liTagInput").autocomplete({
minLength: 2,
source: availableTags,
select: function(event, ui) {
var value = ui.item;
console.log(value);
console.log(jQuery.inArray(value, availableTags));
if(jQuery.inArray(value, availableTags) >= 0)
$(this).val('');
}
});
});
In case you are wondering what I'm trying to do here (which I haven't tested yet because of the line breaks), I'm getting the tags from a span element on the HTML side, then splitting those into an array (availableTags
).
Then what I want to happen is that once a user types something into the text box, if it is not something he/she chose from the auto-complete menu, then the value of the text field should be cleared out (I might also show them a warning telling them to choose from the menu but let's leave that for now).
Any thoughts?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为什么不使用
replace() 来删除空格方法。
要删除所有换行符,请使用
这里: http://jsfiddle.net/tjfmp/
Why don't use
to remove whitespaces using replace() method.
And to remove all line breaks use
Here you go: http://jsfiddle.net/tjfmp/
string.trim()
就是为此目的而设计的。string.trim()
is made for this very purpose.