不管单行文本还是多行文本,在 JavaScript 中,都可以使用 value 属性读取和设置文本框的值。
<form action="javascript:alert('已成功提交 ')" id="form">
<input type="text" size="25" value="en" />
<textarea name="" cols="30" rows="10">en</textarea>
</form>
<script>
var form = document.querySelector('form');
var field1 = form.elements[0];
var field2 = form.elements[1];
alert(field1.value);
alert(field2.value);
</script>
使用 select() 可以选择文本框的值。该方法不接受参数。
<form action="javascript:alert('已成功提交 ')" id="form">
<input type="text" size="25" value="en" />
<textarea name="" cols="30" rows="10">en</textarea>
</form>
<script>
var form = document.querySelector('form');
var field1 = form.elements[0];
var field2 = form.elements[1];
field1.onfocus = function () {
this.select();
};
field2.onfocus = function () {
this.select();
};
</script>
HTML5 新增两个属性: selectionStar 、 selectionEnd ,这两个属性保存文本选取开头和结尾的偏移量。 IE 8 之前的版本不支持该属性,但是在 document.selection 对象,其中保存着用户在整个文档内选择的信息。
function getSelectedText(textbox) {
if (typeof textbox.selectionStar == 'number') {
return;
textbox.value.substring(textbox.selectionStar, textbox.selectionEnd);
} else if (document.selection) {
return document.selection.createRange().text;
}
}
使用:
<form action="javascript:alert('已成功提交 ')" id="form">
<textarea name="" cols="30" rows="10">en</textarea>
</form>
<script>
var form = document.querySelector('form');
var field1 = form.elements[0];
field1.onfocus = function () {
alert(getSelectedText(this));
};
</script>
如果选择部分文本,则使用 HTML 5 的 setSelectionRange() 方法,该方法接受两个参数,分别设置选择的第一个字符和左后一个字符的索引。
function selectText(textbox, startIndex, stopIndex) {
if (textbox.setSelectionRange) {
textbox.setSelectionRange(startIndex, stopIndex);
} else if (textbox.createTextRange()) {
var range = textbox.createTextRange();
range.collapse(true);
range.moveStart('character', startIndex);
range.moveEnd('character', stopIndex - startIndex);
range.select();
}
textbox.focus();
}
通过向 keypress 添加事件阻止默认事件发生。
<form action="javascript:alert('已成功提交 ')" id="form">
<input type="text" size="25" value="en" />
<textarea name="" cols="30" rows="10">en</textarea>
</form>
<script>
var form = document.querySelector('form');
var field1 = form.elements[0];
var field2 = form.elements[1];
field1.onkeypress = function (event) {
var e = event || window;
if (e.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
};
</script>
只允许输入数字
var form = document.querySelector('form');
var field1 = form.elements[0];
var field2 = form.elements[1];
field1.onkeypress = function (event) {
var e = event || window;
if (typeof event.charCode == 'number') {
var charCode = event.charCode;
} else {
var charCode = event.keyCode;
}
if (
!/\d/.test(String.formCharCode(charCode)) &&
charCode > 9 &&
!event.ctrlKey
) {
if (e.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
}
};