日期:2014-05-16  浏览次数:20353 次

一个输入框的默认焦点设置
本帖最后由 hgwyl1 于 2013-03-13 12:39:35 编辑
代码作用描述:
1、一个input和一个select。
2、input为主要输入框;select作为辅助显示。
3、如:select里面有101,102,103,104,105以及201,202,203,204,205是个数字。
select默认显示全部10个数字;
在input中输入数字1以后,select只显示以1开头的101,102,103,104,105五个数字,将2开头的筛选掉了。
(以上部分已实现)

问题1:head区,我定义了一个input的默认焦点,id="input_default"。
但是现在它不起作用!(如果直接打开,焦点不在input那;而点击input后,做刷新动作input有焦点。)
如果是单纯只有input的话是没问题的。
请问如何解决?

问题2:另外,能不能把最下面定义的那段,放在head区?

<html>
<head>
<script>
window.onload = function(){
var oInput = document.getElementById("input_default");
oInput.focus();
}
</script>
</head>

<body onload="Init()">

<form name=frm method="post" action="2.asp">
<table>
  <tr>
    <td><input name="info" style="width:300px" onkeyup="SelectTip(0)" id="input_default" ></td>
  </tr>
  <tr>
    <td>
<span id="check"><select name="check" style="width:300px" size=10 onchange="info.value=options[selectedIndex].text;">
<option value='105'>105</option>
<option value='104'>104</option>
<option value='103'>103</option>
<option value='102'>102</option>
<option value='101'>101</option>
<option value='205'>205</option>
<option value='204'>204</option>
<option value='203'>203</option>
<option value='202'>202</option>
<option value='201'>201</option>
</select></span>
    </td>
  </tr>
<tr><td><input class="button" type="submit" name="Submit" value="新增"></td></tr>
</table>
</form>

<script language="javascript">
var TempArr=[];//存贮option
function Init(){
var SelectObj=document.frm.elements["check"]
/*将数据存入数组*/
with(SelectObj)
 for(i=0;i<length;i++)TempArr[i]=[options[i].text,options[i].value]
}
function SelectTip(flag){
var txtObj=document.frm.elements["info"]
var SelectObj=document.getElementById("check")
var Arr=[]
with(SelectObj){
 var SelectHTML=innerHTML.match(/<[^>]*>/)[0]
 for(i=0;i<TempArr.length;i++)
 if(TempArr[i][0].indexOf(txtObj.value)==0||flag)//若找到以txt的内容开头的,添option。若flag为true,对下拉框初始化
 Arr[Arr.length]="<option value='"+TempArr[i][1]+"'>"+TempArr[i][0]+"</option>"
 innerHTML=SelectHTML+Arr.join()+"</SELECT>"
}
}
</script>
</body>
</body>
</html>

------解决方案--------------------
window.onload没有执行,你把window.onload删了,把var oInput = document.getElementById("input_default");
    oInput.focus();放在Init()里面的第一行就行了。
------解决方案--------------------
删除window.onload或者body中的onload任何一个。。

将对应的代码移动到另外一个函数体中

可以放到head里面,因为是onload事件,对象已经生成了