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

发布于 2024-12-22 07:08:36 字数 1351 浏览 1 评论 0原文

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

所以我这样做:(在文档准备功能内)

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

想法是当用户专注于 input< /code> 称为 #dest 修剪其上的所有空格字符(之前使用 focusout 添加以提高视觉舒适度)。

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

希望有人可以帮助我。

谢谢!


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


感谢 Phil Klein 的最终编辑和解决方案

我的问题是错误地使用了 jQuery 的 trim() 函数...根据 trim() 文档 它确实下列:

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

昨天我没有读到最后一部分,其中写着从提供的字符串的开头和结尾 - 对不起大家。 :(

幸运的是,在上面的绘图之后,@Phil Klein 理解了我的错误并帮助我找到了解决方案:

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

您可以 阅读有关该解决方案的更多信息并在此处查看示例

感谢@Phil Klein 以及所有在这方面为我提供帮助的人;)

I've seen some similar questions to mine here, but they don't really answer me...

So I'm doing this: (Inside the document ready function)

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

The ideia is when the user focus on a input called #dest trim all the space characters on it (previously added using focusout for visual comfort).

Right now, nothing is happening. :(

Hope someone can help me a bit here.

Thanks!


Is this a computer related problem?
I've tested all the code provided by commenters and none works. I'm using Firefox and Safari under OSX (Snow Leopard) 10.6.8 and also Safari under 10.8.2 (Lion) and I got the same results... OSX problem? -- Everything is ok, check my last edit!


Final Edit and Solution thanks to Phil Klein

My problem was using incorrectly jQuery's trim() function... According to the trim() documentation it does the following:

The $.trim() function removes all newlines, spaces (including
non-breaking spaces), and tabs from the beginning and end of the
supplied string. If these whitespace characters occur in the middle of
the string, they are preserved.

Yesterday I didn't read the last part where it says from the beginning and end of the supplied string -- Sorry everyone. :(

Lucky and after the drawing above, @Phil Klein understood my mistake and helped me with a solution:

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

You can read more about the solution and see an example here.

Thanks to @Phil Klein and also everyone who helped me on this one ;)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

烧了回忆取暖 2024-12-29 07:08:36

下面的示例从焦点文本框的内容中删除所有空格。此特定示例需要 jQuery 1.7+,因为它使用新的 .on() API:

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

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

The example below removes all spaces from the contents of the textbox on focus. This particular example requires jQuery 1.7+ since it uses the new .on() API:

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

See this example: http://jsfiddle.net/RnZ5Y/5/

美煞众生 2024-12-29 07:08:36

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

Try these : $.trim($("#dest").val());
correct me if i am wrong !!

溇涏 2024-12-29 07:08:36

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

try $("#dest").val().trim();,it worked for me.

霓裳挽歌倾城醉 2024-12-29 07:08:36

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

If you're code above is executing before the page isn't fully ready then it's very likely that the #dest isn't found by jquery and the code for listening to the event doesn't get executed.

筱果果 2024-12-29 07:08:36

该功能非常适合您的场景。因为它只占用字符之间的一个空格,并且不允许超过 2 个空格

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

This function is working fine for your scenario. As it is taking only one space between character and not allow more than 2 space

$(function() {
 $("#dest").on("focusout", function() {
    var dest = $(this);
    dest.val(jQuery.trim(dest.val()));        
    dest.val(dest.val().replace(/[ ]{2,}/, ' ')); 
 });
});
且行且努力 2024-12-29 07:08:36

我制作了自己的函数:)

请看这里:)

function KillSpaces(phrase) {

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

您可以随时轻松使用它!

$(document).ready(function(){
var test="for testing purposes only";
alert(killSpaces(test));
});

I made my own function :)

look here please :)

function KillSpaces(phrase) {

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

you can easily use it when ever you want to!

$(document).ready(function(){
var test="for testing purposes only";
alert(killSpaces(test));
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文