用&替换搜索输入框中的所有空格。字符

时间:2013-07-25 15:24:45

标签: javascript jquery html regex replace

我在网站上有一个搜索输入框。 如果用户在输入框中输入文本,我想用“&”替换所有[空格]字符。 '(用语言:空间和空间)

但我的代码中有一个小错误,因为如果用户试图删除文本(退格),那么它会插入一个'& '再次,如果最后一个字符是替换空间......

请参阅我在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, " & "

});

2 个答案:

答案 0 :(得分:3)

更好的方法是在将字符添加到值之前检查空格键是否被按下,如果是,则阻止字符输出并添加&
这也可以避免退格问题:

$("[name='search']").on('keydown', function(e) {
    if (e.which === 32) {
        e.preventDefault();
        this.value = this.value + ' & ';
    } 
});

FIDDLE

答案 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);                
        }

    });

(this code on jsFiddle)