【问题标题】:javascript Multiple space into input value self trimjavascript 输入值中的多个空格自修剪
【发布时间】:2014-09-26 23:00:58
【问题描述】:

我有这样的输入:

<input type="hidden" name="myName" value="John Fitzgerald          Kennedy      " />

当我使用 Javascript 读取输入内容时:

var myName = document.getElementsByName("myName")[0].value;

myName的内容:"John Fitzgerald Kennedy ";

如何获得内容:"John Fitzgerald Kennedy "

我必须计算姓名和姓氏之间的固定字符才能找到姓氏并正确拆分两个单独的字符串。

谢谢!

【问题讨论】:

  • 好吧,它不适合我 (demo)。您的页面上还有其他事情发生吗?
  • 很抱歉,您的示例对我找到错误帮助很大:在输入的字符串中,我有一个像 ' 这样的实体所以错误在于 substr 计数,因为输入是固定大小的文本,但实体使用 5 个位置并将名称的第二部分移动到左侧。如何在不转换实体的情况下获取输入?
  • 展示一个重现您实际内容的示例,准确展示您想要/需要的结果,然后我会尽力提供帮助。

标签: javascript html input space trim


【解决方案1】:

如果我正确理解您的问题,这可能会有所帮助。尝试用单个 ' ' 字符替换字符串中的空格,并从字符串的开头和结尾修剪空格,如下所示:

var myName = document.getElementsByName("myName")[0].value.replace(/\s+/g,' ').trim();

之后你可以像这样解析字符串来提取给定的名字和姓氏

var surname = myName.substring(myName.lastIndexOf(' '));
var givenName = myName.substring(0, myName.lastIndexOf(' '));

此链接有助于了解字符串操作:W3C String Reference

【讨论】:

    【解决方案2】:

    您的内容包含多个空格。但是如果你想在 HTML 节点中看到它,比如div,你需要用&amp;nbsp; 替换空格。但是在&lt;pre&gt;标签中你不需要替换。

    http://jsfiddle.net/ha9pt60v/4/

    // myName is "John Fitzgerald          Kennedy      "
    var myName = document.getElementsByName("myName")[0].value;
    
    // in <pre>
    document.getElementById('pre').innerHTML = myName;
    
    // in another tag
    document.getElementById('my').innerHTML = myName.replace(/ /g, '&nbsp;');
    

    【讨论】:

    • 但它在 &lt;input /&gt; 的值中,它不会折叠空白(通常,对于大多数 HTML 元素,你是对的;但不是在这种情况下,除非我真的误读了你的答案吗?)
    • @DavidThomas,asker 说他在document.getElementsByName("myName")[0].value 阅读时丢失了空格。而且我还以为他只是用 HTML 元素打印出来的,看不到多个空格。
    猜你喜欢
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2016-05-08
    • 2016-12-18
    • 1970-01-01
    • 2019-02-19
    • 2023-03-17
    相关资源
    最近更新 更多