疾病只会引发第一个问题...为什么要问IE5,因为它是在Windows CE设备上运行的,所以我只能使用IE5。我制作的应用程序使用包含两个元素的网页。
我有两个文本字段和一个列表或<select>
我想将一个文本框的值传输到列表中。我已经在IE 10和Chrome中运行了它,但是当我在设备上测试网页时,它没有将文本字段2的值发送到列表中。谁能帮我解决这个问题?
这是我的html代码:
<tr>
<td>Locatie:</td>
<td><input type="text" id="one" onkeyup="CheckOne()" name="locatie" value="{locatie}" /></td>
</tr>
<tr>
<td>Bonregel:</td>
<td><input type="text" name="bonregel" id="two" onkeyup="CheckTwo(event)" /></td>
</tr>
<tr>
<td>Bonlijst:</td>
<td><select id="selectbox" multiple></select></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Verzenden" id="sub" onclick="CheckContent()" /></td>
</tr>
<tr>
<td></td>
<td><input type="button" value="Velden Legen" id="reset" onclick="ClearFields()" /></td>
</tr>
然后我有我的JavaScript函数,用于将数据添加到列表中:
function AddToList(field) {
// Create an Option Object
var opt = document.createElement("option");
document.getElementById("selectbox").options.add(opt);
opt.text = document.getElementById("two").value;
opt.value = document.getElementById("two").value;
}
function CheckTwo(event) {
var field = document.getElementById("two").value;
var tKey = (event.which) ? event.which : event.keyCode;
if (tKey == 51) {
AddToList(field);
GiveFocus("two");
}
}
// Gives focus to the specified component
function GiveFocus(id) {
document.getElementById(id).focus();
}
// Action that gets triggered by textfield 1
function CheckOne() {
if (event.keyCode == 13)
GiveFocus("two");
}
编辑
我已经发现,出于某种原因,按钮具有优先权。我按Enter键即提交按钮。但是,当我在第二个文本字段中按Enter键时,它应该将数据发送到列表中。是否有解决方案,所以该按钮不具有优先权
这是我完整代码的小提琴:
https://jsfiddle.net/3jywt8v1/1/
最佳答案
在IE5上,您可能需要使用Option
构造函数而不是createElement
:
function AddToList(field) {
// Create an Option Object
var val = document.getElementById("two").value;
var opt = new Option(val, val);
document.getElementById("selectbox").options.add(opt);
}
它也适用于现代浏览器。
我认为使用的
add
是将选项添加到列表的最兼容方法,但是如果不是,则可能需要通过赋值添加它:var options = document.getElementById("selectbox").options;
options[options.length] = opt;
...但是同样,我认为
add
在90年代得到了更好的支持。