jQuery:input.val()中单词之间的$ .trim()空格

时间:2011-12-20 04:00:51

标签: javascript jquery trim

我在这里看到了一些类似的问题,但他们并没有真正回答我......

所以我这样做:(在文档就绪函数内)

$("#dest").focusin(function() {
    $("#dest").val($.trim($("#dest").val()));
});

当用户专注于input调用#dest上的所有空格字符时(之前使用焦点添加以提高视觉舒适度),这意味着。

现在,什么也没发生。 :(

希望有人能在这里帮助我。

谢谢!


这是与计算机相关的问题吗? 我已经测试了评论者提供的所有代码,但都没有。我在OSX(Snow Leopard)10.6.8下使用Firefox和Safari,在10.8.2(Lion)下使用Safari,我得到了相同的结果...... OSX问题? - 一切正常,查看我的上一次编辑!


最终编辑和解决方案归功于Phil Klein

我的问题是使用了错误的jQuery trim()函数...根据trim() documentation,它执行以下操作:

  

$ .trim()函数删除所有换行符,空格(包括   不间断的空格),以及从开头和结尾的标签   提供的字符串如果这些空白字符出现在中间   字符串,它们被保留。

昨天我没有读到它所说的from the beginning and end of the supplied string的最后一部分 - 对不起大家。 :(

幸运的是,在上面的图纸之后,@ Phil Klein理解了我的错误并帮助我解决了问题:

$(function() {
    $("#dest").on("focus", function() {
        var dest = $(this);
        dest.val(dest.val().split(" ").join("")); 
    });
});

你可以read more about the solution and see an example here

感谢@Phil Klein和所有帮助过我的人;)

6 个答案:

答案 0 :(得分:18)

以下示例从焦点上的文本框内容中删除所有空格。这个特殊的例子需要jQuery 1.7+,因为它使用了新的.on() API:

$(function() {
    $("#dest").on("focus", function() {
        var dest = $(this);
        dest.val(dest.val().split(" ").join("")); 
    });
});

请参阅此示例:http://jsfiddle.net/RnZ5Y/5/

答案 1 :(得分:4)

试试这些:$.trim($("#dest").val());
如果我错了,请纠正我!!

答案 2 :(得分:1)

尝试$("#dest").val().trim();,它对我有用。

答案 3 :(得分:0)

如果上面的代码在页面未完全准备好之前正在执行,则jquery很可能找不到#dest,并且不会执行用于侦听事件的代码。

答案 4 :(得分:0)

此功能适用于您的方案。因为它在字符之间只占用一个空格而不允许超过2个空格

$(function() {
 $("#dest").on("focusout", function() {
    var dest = $(this);
    dest.val(jQuery.trim(dest.val()));        
    dest.val(dest.val().replace(/[ ]{2,}/, ' ')); 
 });
});

答案 5 :(得分:0)

我创造了自己的功能:)

请看这里:)

max(d)

您可以随时轻松使用它!

function KillSpaces(phrase) {

            var totalPhrase = "";
            for (i = 0; i < phrase.length; i++)
            {
                if (phrase[i] != " ")
                {
                    totalPhrase += phrase[i];
                }
            }
            return totalPhrase;
        }