如下代码,我想实现在输入框输入数字后,如果小于某个值,则再添加一个输入框,并且新的输入框获取焦点
如果在onkeydown中不触发onchange中的事件的话,则焦点会跳过新出现的输入框
但是如果在onkeydown中触发了onchange中的事件,则会造成onchange中的事件被调用了2次
有什么办法可以实现我想要的功能呢??
<html>
<head>
<meta http-equiv = "Content-Type" content = "text/html; charset = UTF-8" />
<script type="text/javascript" language="javascript">
function myKeyDown(e) {
var key = window.event.keyCode;
if((key === 13 || key === 108) && validNum(e.srcElement)) {
window.event.keyCode = 9;
}
} function validNum(obj) {
var v = parseInt(obj.value, 10);
if(!isNaN(v) && v > 0 && v < 12) {
var tb = obj.parentNode.parentNode.parentNode; //tbody
var row = obj.parentNode.parentNode.rowIndex;
var newRow = tb.rows[row].cloneNode(true);
newRow.firstChild.firstChild.value = "";
tb.appendChild(newRow);
return true;
} else {
alert("请输入1~12之间的正整数!");
obj.value = "";
return false;
}
}
window.onload = function() {
document.getElementsByTagName("input")[0].focus();
};
</script>
</head>
<body>
<table>
<tbody>
<tr>
<td>
<input type="text" onkeydown="myKeyDown(event)" onchange="return validNum(this)" />
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>
<input type="button" value="Sbumit" onclick="alert('提交')" />
</td>
</tr>
</tfoot>
</table>
</body>
</html>
如果在onkeydown中不触发onchange中的事件的话,则焦点会跳过新出现的输入框
但是如果在onkeydown中触发了onchange中的事件,则会造成onchange中的事件被调用了2次
有什么办法可以实现我想要的功能呢??
<html>
<head>
<meta http-equiv = "Content-Type" content = "text/html; charset = UTF-8" />
<script type="text/javascript" language="javascript">
function myKeyDown(e) {
var key = window.event.keyCode;
if((key === 13 || key === 108) && validNum(e.srcElement)) {
window.event.keyCode = 9;
}
} function validNum(obj) {
var v = parseInt(obj.value, 10);
if(!isNaN(v) && v > 0 && v < 12) {
var tb = obj.parentNode.parentNode.parentNode; //tbody
var row = obj.parentNode.parentNode.rowIndex;
var newRow = tb.rows[row].cloneNode(true);
newRow.firstChild.firstChild.value = "";
tb.appendChild(newRow);
return true;
} else {
alert("请输入1~12之间的正整数!");
obj.value = "";
return false;
}
}
window.onload = function() {
document.getElementsByTagName("input")[0].focus();
};
</script>
</head>
<body>
<table>
<tbody>
<tr>
<td>
<input type="text" onkeydown="myKeyDown(event)" onchange="return validNum(this)" />
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>
<input type="button" value="Sbumit" onclick="alert('提交')" />
</td>
</tr>
</tfoot>
</table>
</body>
</html>
<html>
<head>
<meta http-equiv = "Content-Type" content = "text/html; charset = UTF-8" />
<script type="text/javascript" language="javascript">
function validNum(obj) {
var v = parseInt(obj.value, 10);
if(!isNaN(v) && v > 0 && v < 12) {
var tb = obj.parentNode.parentNode.parentNode; //tbody
var row = obj.parentNode.parentNode.rowIndex;
var newRow = tb.rows[row].cloneNode(true);
newRow.firstChild.firstChild.value = "";
tb.appendChild(newRow);
return true;
} else {
alert("请输入1~12之间的正整数!");
obj.value = "";
return false;
}
} function myKeyDown(e) {
var key = window.event.keyCode;
if((key === 13 || key === 108) && validNum(e.srcElement)) {
window.event.keyCode = 9;
e.srcElement.onchange = "";
} else {
if(!e.srcElement.onchange) {
e.srcElement.onchange = new Function("validNum(this)");
}
}
} window.onload = function() {
document.getElementsByTagName("input")[0].focus();
};
</script>
</head>
<body>
<table>
<tbody>
<tr>
<td>
<input type="text" onkeydown="myKeyDown(event)" />
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>
<input type="button" value="Sbumit" onclick="alert('提交')" />
</td>
</tr>
</tfoot>
</table>
</body>
</html>
function myKeyDown(e) {
var event = e || window.event;
var key= event.keyCode || event.which || event.charCode;//兼容浏览器