为什么没有.trim()真正修剪?

时间:2013-09-08 14:51:36

标签: javascript jquery

我认为trim()不存储修剪后的值。

我在用户提交字符串之前对结果应用trim并且它正常工作,它通过删除额外的空间正确显示。但是如果我重新检索修剪后的值,它会给我原始的用户输入,但不会删除空间。

在我从输入字段中检索用户输入之前,我添加了trim()

input = $("<input type='text'>").val(txt);
input.trim()

它不起作用。

4 个答案:

答案 0 :(得分:2)

你应该把它归还,否则就没有意义了。

txt = txt.trim();
input = $("<input type='text'").val(txt);

注意:以上是使用本机JavaScript trim()方法,假设txt是纯字符串。如果您的网站应支持IE8及更低版本,请参阅this answer以了解如何添加此类支持。

根据OP评论进行更新。事实证明,请求是截断所有内部空间,就像HTML一样。为实现这一目标,加上更好的支持改变这条线:

var text = $(this).text();

对于这三个人:

var text = $.trim($(this).text());
while (text.indexOf("  ") > 0)
    text = text.replace("  ", " ");

Updated fiddle

答案 1 :(得分:1)

trim()应用于字符串,即txt,但不应用于jQuery对象(文本框控件)

input = $("<input type='text'").val($.trim(txt));

答案 2 :(得分:1)

trim方法是一种静态方法,即您从jQuery对象访问它,但它会对您发送到它的数据起作用,并返回结果。

要从输入中获取数据,修剪它并将其放回原位:

input = $("<input type='text'>").val(txt);
input.val($.trim(input.val()))

您可能只想在将其放入输入之前修剪它:

input = $("<input type='text'>").val($.trim(txt));

答案 3 :(得分:0)

trim方法不会更改原始字符串。您需要将其结果归因于变量才能获得结果。

------------------------------------------

请注意以下说明:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim

描述

trim方法返回从两端剥去空白的字符串。 trim不会影响字符串本身的值。

------------------------------------------

除此之外,请允许我建议您通过其ID来引用输入字段 (例如:$(“#texto”))

<!doctype html>
<html lang="en">
<head>
  <meta charset="iso-8859-1">
  <title>jQuery.trim demo</title>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script>
   $(document).ready(function(){
     var txt = "         lots of spaces before and after         ";
     alert('pause');
     $("#texto").val("'" + txt.trim() + "'"); // ok
    // $("<input type='text'>").val("'" + txt.trim() + "'"); // nok
   });
 </script>
</head>
<body>
  <input type='text' id="texto" size='40' />
</body>
</html>

(示例改编自页面http://api.jquery.com/jQuery.trim/