下面给出的是一部分代码,该代码通过html动态加载表行。表格行具有一个文本框,该文本框从变量“ currentValue”获取其值。但是,如果“ currentValue”的内容之间有一个空格,则仅显示第一个单词。文本框中不显示空格(在下面的代码中,仅显示“ hello”)。除了通过单独的javascript查询设置值以外,请提出其他解决方案。

    currentValue = 'hello world';

    tr.append("<td><input id="+ textBoxId1 + " class='MyTextBox1' type='text' name='parameter_label' value="+ currentValue +" maxlength="+stringMaxLength+"></input></td>");

最佳答案

考虑一下您正在生成的HTML。假设currentValue具有"something here"

<td><input id=someid class='MyTextBox1' type='text' name='parameter_label' value=something here maxlength=40</input></td>
<!-- Notice ---------------------------------------------------------------------^^^^^^^^^^^^^^    -->


现在应该清楚问题出在哪里(还有另外两个问题):您没有在value属性值周围加引号。仅当值没有空格(或其他几个字符)时才有效。 More in the specification.

所以我们添加它们:

tr.append("<td><input id="+ textBoxId1 + " class='MyTextBox1' type='text' name='parameter_label' value='"+ currentValue +"' maxlength="+stringMaxLength+"</input></td>");
// Note -----------------------------------------------------------------------------------------------^------------------^


假定currentValue中永远不会包含'。如果可能,可以改用"

tr.append("<td><input id="+ textBoxId1 + " class='MyTextBox1' type='text' name='parameter_label' value=\""+ currentValue +"\" maxlength="+stringMaxLength+"</input></td>");
// Note -----------------------------------------------------------------------------------------------^^------------------^^


假设currentValue永远不会包含",或者您已经正确地准备好currentValue(要处理所有属性,必须将<&变成实体,在这种情况下, "转换为&quot;)。

其他两个问题是:


您在>元素上缺少结尾的<input ...>
删除</input>input元素是空元素,它们从不包含结束标记。


所以:

tr.append("<td><input id="+ textBoxId1 + " class='MyTextBox1' type='text' name='parameter_label' value='"+ currentValue +"' maxlength="+stringMaxLength+"></td>");

关于javascript - 通过javascript加载html时,文本框值不考虑空间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33062078/

10-13 00:21