14.2 文本框脚本

优质
小牛编辑
132浏览
2023-12-01

在HTML 中,有两种方式来表现文本框:一种是使用<input>元素的单行文本框,另一种是使用<textarea>的多行文本框。这两个控件非常相似,而且多数时候的行为也差不多。不过,它们之间仍然存在一些重要的区别。
要表现文本框,必须将<input>元素的type 特性设置为"text"。而通过设置size 特性,可以指定文本框中能够显示的字符数。通过value 特性,可以设置文本框的初始值,而maxlength 特性则用于指定文本框可以接受的最大字符数。如果要创建一个文本框,让它能够显示25 个字符,但输入不能超过50 个字符,可以使用以下代码:

<input type="text" size="25" maxlength="50" value="initial value">

相对而言,<textarea>元素则始终会呈现为一个多行文本框。要指定文本框的大小,可以使用rows和cols 特性。其中,rows 特性指定的是文本框的字符行数,而cols 特性指定的是文本框的字符列数(类似于<inpu>元素的size 特性)。与<input>元素不同,<textarea>的初始值必须要放在<textarea>和</textarea>之间,如下面的例子所示。

<textarea rows="25" cols="5">initial value</textarea>

另一个与<input>的区别在于,不能在HTML 中给<textarea>指定最大字符数。
无论这两种文本框在标记中有什么区别,但它们都会将用户输入的内容保存在value 属性中。可以通过这个属性读取和设置文本框的值,如下面的例子所示:

var textbox = document.forms[0].elements["textbox1"];
alert(textbox.value);
textbox.value = "Some new value";

我们建议读者像上面这样使用value 属性读取或设置文本框的值,不建议使用标准的DOM 方法。
换句话说,不要使用setAttribute()设置<input>元素的value 特性,也不要去修改<textarea>元素的第一个子节点。原因很简单:对value 属性所作的修改,不一定会反映在DOM中。因此,在处理文本框的值时,最好不要使用DOM 方法。