我在网站上有一个搜索输入框。 如果用户在输入框中输入文本,我想用“&”替换所有[空格]字符。 '(用语言:空间和空间)
但我的代码中有一个小错误,因为如果用户试图删除文本(退格),那么它会插入一个'& '再次,如果最后一个字符是替换空间......
请参阅我在JSFiddler上的示例:http://jsfiddle.net/JFEb4/
有什么想法吗?
代码:
$("[name='search']").keyup(function() {
var input = $(this).val().replace(/ & /g, "x");
if (input.indexOf(" ") >= 0) {
$(this).val(input.replace(' ', ' & ').replace(/x/g, " & "
});
答案 0 :(得分:3)
更好的方法是在将字符添加到值之前检查空格键是否被按下,如果是,则阻止字符输出并添加&
。
这也可以避免退格问题:
$("[name='search']").on('keydown', function(e) {
if (e.which === 32) {
e.preventDefault();
this.value = this.value + ' & ';
}
});
答案 1 :(得分:0)
这是我的看法:
$("[name='search']")
.on('keyup paste', function(e) {
var replaceSpaces = function(el) {
return function() {
$(el).val($(el).val().replace(/(^|[^&])\s+($|[^&])/g, '$1 & $2'));
};
} (this);
if (e.type === 'keyup' && e.which === 32) {
replaceSpaces();
} else if (e.type === 'paste') {
setTimeout(replaceSpaces, 5);
}
});