2014-09-26 49 views
0

我有一个这样的输入:JavaScript的多重空间为输入值自修剪

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

当我读到使用Javascript输入内容:

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

MYNAME的内容:"John Fitzgerald Kennedy ";

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

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

谢谢!

+3

那么,它不为我做([DEMO](http://jsfiddle.net/davidThomas/81Lxzjqw/))。你网页上发生的其他事情? – 2014-09-26 23:18:06

+0

抱歉,但您的示例帮助我找到错误:在输入字符串中,我有一个像'这样的实体,因此错误出现在substr计数中,因为输入是固定大小的文本,但实体使用5的位置并将名称的第二部分移动到左侧。如何在没有转换的情况下使用实体进行输入? – Andrea 2014-09-26 23:39:42

+0

展示一个能够再现您实际内容的示例,准确显示您想要/需要的结果,然后我会尽我所能提供帮助。 – 2014-09-26 23:54:59

回答

0

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

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

0

您有多个空格的内容。但是,如果您希望在像div这样的HTML节点中看到它,则需要用&nbsp;替换空格。但在<pre>标签你不需要更换。

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;'); 
+0

但它的值为'',它不会折叠空格(一般来说,对于大多数HTML元素而言,您是对的;但在这种情况下,除非我错误地阅读您的答案? ) – 2014-09-26 23:42:05

+0

@DavidThomas,asker说,当用'document.getElementsByName(“myName”)[0] .value'读取时,他丢失了空格。我认为他只是将它打印在HTML元素中,并且看不到多个空格。 – dizel3d 2014-09-26 23:53:17