2

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

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

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

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

它不起作用。

4

4 回答 4

2

你应该把它分配回去,否则它是没有意义的。

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

注意:以上是使用原生 JavaScripttrim()方法,假设txt是纯字符串。如果您的站点应支持 IE8 及以下版本,请参阅此答案以了解如何添加此类支持。

更新,基于 OP 评论。事实证明,请求是截断所有内部空间,与 HTML 一样。为实现这一点,加上对修剪更改此行的更好支持:

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

对这三个:

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

更新了小提琴

于 2013-09-08T14:53:15.793 回答
1

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

input = $("<input type='text'").val($.trim(txt));
于 2013-09-08T14:53:20.953 回答
1

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

要从输入中获取数据,修剪它,然后放回去:

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

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

input = $("<input type='text'>").val($.trim(txt));
于 2013-09-08T14:57:39.927 回答
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/

于 2013-09-08T15:22:44.737 回答