JavaScript只取一个句子的第一个单词

5

我在一个小问题上卡住了。

我想使用JavaScript设置输入框的值,但是jQuery没有显示完整的句子。

var name = "Richard Keep";

但是当我尝试这样做时
$('input#nameid').val(name)

转换为这个输入

<input type="text" id="nameid">

值被设置为仅限于 Richard,而不是 Richard Keep。如何使jQuery回显整个字符串而不仅仅是字符串中的第一个单词?谢谢。

编辑:

<td id="To_be_collected_port" onclick="requestPopup()" class="tr-selected">
   <div class="pop-td To_be_collected_port">
   </div>
   this is the content am fetching
</td>

这将仅显示此文本

var str = $('#To_be_collected_port').text();

然后。
$('.xyz').html("<input type=\"text\" name=\"text\" id=\"selected-service-text\" value="+str+">");

4
那个行为非常奇怪——我完全无法复制它:http://jsfiddle.net/jq8x09f7/ 你能发一个展示这个问题的可用示例吗?输入框有maxlength属性吗?展示你全部的代码可能有助于缩小问题范围。 - Rory McCrossan
2
你能复制这个问题吗?这是不可能的,所以很可能要么 name 实际上是 Richard,要么其他东西在干扰。 - dfsq
2
输入的maxlength或name.charCodeAt(7)不是空格,或者输入具有隐藏整个内容的宽度样式。 - Hacketo
1
你应该在问题中附带一些代码。 - Jenish Rabadiya
你还应该避免使用JavaScript内置对象、属性和方法的名称,比如“name”。 - Sergii
显示剩余3条评论
2个回答

11

你忘了在value属性周围加上转义的双引号:

value="+str+"
应该是:
value=\""+str+"\"

示例代码 - 现在有效

为什么它显示“this”的解释

这意味着您的输入标记实际上是组成了这个:

<input type="text" ... value=this is the content am fetching>
  • value = "this"
  • is, the, content, am, fetching = 没有任何值的属性

3
这起了魔法般的作用。谢谢。(嘘,我知道我们不应该感谢别人,但你不知道我经历了什么) - Richie
1
尽管在HTML中引用属性是可选的,但像这样的事情是我坚持在我参与的任何项目中所有属性都要正确引用的原因。 - scunliffe

2

这是奇怪的行为。你可以尝试以下几个方法:

1)在将值放入字段之前添加控制台日志。如果没有正确显示整个名称,则可能有一些代码正在操纵变量。

console.log(name);
$('input#nameid').val(name);

2) 看起来有点愚蠢,但你的输入字段是否视觉上太小了?也许它已经添加了整个名称,但你只是看不到。

3) 在字段上使用onchange事件,检查在更新输入字段后是否有更改。


console.log(name)会显示全名,但问题出现在输入框内。输入框的最大长度未设置为任何值。 - Richie
如果没有设置任何东西,将2个名称添加到输入中应该没有问题。提供更多的代码或一个jsfiddle来模拟你的问题。根据你提供的内容,我们只能猜测问题所在。 - Christophe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接