如何根据另一个输入文本字段(存在于另一个HTML表中)的特定值更改一个输入文本字段(在一个HTML表中)的值
how to change value of one input text field (in one html table) based on a specific value of another input text field (present in another html table)
我有一个html表,其中有一行。这一行有两个td,其中包含它们自己的表(每个td有10行和10个输入字段)。我想根据第一个字段onblur()中的值更改另一个相应文本字段的值。
第一个字段。它从大小为10的数组中获取值
<tr>
<td valign="top">
<table width="85%" border="0" cellpadding="2" cellspacing="1" class="inputTable">
<tr>
<td width="60%">
<table width="60%" border="0" cellpadding="0" cellspacing="1">
<c:set var="input1" value="${someForm.value1}"></c:set>
<c:forTokens items="0,1,2,3,4,5,6,7,8,9" delims="," var="count">
<tr>
<td><input id="field1" name="field1" type="text" value="<c:out value="${input1[count]}" />" onblur="setText2(this)" maxlength="20" size="15">
</td>
</tr>
</c:forTokens>
</table>
</td>
</tr>
</table>
</td>
第二场。这需要在运行时对超过10个字段的值进行更改
<td valign="top">
<table width="85%" border="0" cellpadding="2" cellspacing="1" class="inputTable">
<tr>
<td width="60%">
<table width="60%" border="0" cellpadding="0" cellspacing="1">
<c:forTokens items="0,1,2,3,4,5,6,7,8,9" delims="," var="count">
<tr>
<td><input id="field2" name="field2" type="text" value="" />" readonly class="readonly" maxlength="1" size="1">
</td>
</tr>
</c:forTokens>
</table>
</td>
</tr>
</table>
</td>
</tr>
Javascript: <script>
function setText2(element) {
if(element.value)
{
document.getElementById("field2").value = element.value;
}else{
document.getElementById("indicator").value = "";
}
}
</script>
运行正常。但问题是我能够识别哪些字段正在通过这个被改变,但无法获得目标字段的引用。这将改变第二个字段的值,但总是在第二个表的第一行。
请帮助我运行这个,以便如果table1的一个字段发生变化,那么表2的各自(相同的串行)字段应该改变。由于一些项目限制,我不能改变表结构。
getElementById()
正在选择id="field2"的第一个元素。您不应该为多个元素提供相同的id。尝试更改id以对应于计数,然后在javascript函数中,您可以获得field2输入,对应于模糊输入的计数。
将您的field1
代码替换为:
<input id="field1_${count}" name="field1" type="text" value="${input1[count]}"
onblur="setText2(this)" maxlength="20" size="15"/>
将field2
代码替换为:
<input id="field2_${count}" name="field2" type="text" value=""
readonly="readonly" class="readonly" maxlength="1" size="1">
然后更改javascript函数:
function setText2(element) {
if(element.value)
{
var changedId = element.id;
var elementNumber = changedId.substring(changedId.indexOf('_') + 1);
document.getElementById("field2_" + elementNumber).value = element.value;
}else{
document.getElementById("indicator").value = "";
}
}
根据Tap的回答,为每个字段(数组)分配不同的id。我唯一想添加的是,我们应该使用c:out将number赋值给id,如下所示(否则id将不会像预期的那样有数字,而是将字符串赋值为"field1_${count}"):
使用:
<input id="<c:out value="field1_${count}" />" name="field1" type="text" value="<c:out value="${input1[count]}" />" onblur="setText2(this)" maxlength="20" size="15"/>
运行良好!!;)
我很开心;这在不影响代码结构的情况下解决了我的大问题……
再次感谢你的建议。:)
相关文章:
- 使用javascript将动态表从一个html页面打印到另一个html页
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 从html创建一个指令,该指令按类名应用函数
- 如何将值传递到上一个html页面
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 一个html元素的克隆次数太多
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 创建一个循环来简化HTML和CSS代码
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- HTML外部javascript加载另一个javascript
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- 如何在另一个html文件的框架中包含图像
- 按下一个HTML按钮,该按钮使用一个功能在同一个新窗口中打开URL
- 我可以共享一个HTML播放器吗
- 如何在一个html页面上使用js进行2次乘法运算
- 使用数据属性将HTML数据复制到另一个元素
- 返回值从 Javascript 到 HTML <一个 href> 标记
- HTML -一个页面上的多个表单-在POST方法中发送CSV列表