<tr>
<td>
<b>Escalation:
</td></b>
<td>
<TextArea name='escalation' onKeyDown=\"limitText(this.form.escalation,this.form.countdown,100);\"
onKeyUp=\"limitText(this.form.escalation,this.form.countdown,100);\">$Text</textarea>You have <input readonly type=\"text\" name=\"countdown\" size=\"3\" value=\"100\"> characters left.
</td>
</tr>
这是我尝试使用的代码的摘录。基本上我正在尝试使用存储在php变量中的值填充文本区域,该变量来自SQL数据库。 Javascript函数将块中的文本数量限制为100个字符。
问题是它用空格填充初始值中没有使用的空间!我在两个引号之间打印了$ Text,所以我知道它在数据库中没有空格,但它没有。您还可以清楚地看到我在textarea标签之间没有任何空间,所以这不是我看到其他海报的问题。
有什么想法吗?
答案 0 :(得分:1)
是的,我以前见过这种行为。检查您从数据库中读取值的列是“CHAR”类型还是键入“VARCHAR”。始终对可变长度(VARCHAR)字段类型使用固定长度(CHAR)更有效,因此有时以这种方式设计数据库。缺点是存储在这些字段中的较短数据总是用空格填充。
解决方案:您的PHP中可能有一行看起来像这样:
$Text = $row['text'];
将该行更改为以下内容:
$Text = trim($row['text']);
'trim'功能将去除前导和尾随空格。如果您使用固定长度字段,请记住您还必须填写您写入数据库的值。这意味着您必须在要写入数据库的字符串中添加前导空格,以便为固定宽度字段设置适当的长度。