JSP标签库改变复选框的名字吗?
-
21-09-2019 - |
题
我试图用一个选择所有复选框以选择复选框列。
所以我给了所有我想在检查过的那些曾经的同名 ABoxesElement ,这样我可以轻松地检查他们都在JavaScript中。
然而,当我在Firefox中使用Firebug我可以看到该复选框没有保持我给了他们,但预先计划的组件名称并附加自动递增的数字我的复选框的名称。
既然不能在getElementByName使用正则表达式我怎么能去有关设置多个复选框相同的值。 (ID用于其它东西)..这是我的代码:
:选择所有复选框强>
<dmf:checkbox
name="ABoxes"
onclick = 'selectAllACheckBoxes'
id="allABoxes"
runatclient="true"/>
<强>我想要检查的复选框中的一个的实施例强>
<dmf:checkbox
name="ABoxesElement"
id="<%=...%>"
runatclient="true"/>
****的Javascript实施例****
function selectAllCheckBoxes(source) {
var checked = source.checked
var cbName = source.name + 'Element';
var col = document.getElementsByName(cbName);
for (var i=0; i<col.length;i++)
{
col[i].checked = checked;
col[i].disabled = !checked;
}
}
在页面呈现,但是我注意到个别复选框的名称不是 ABoxesElement 但类似的 component_nameAboxesElement_2 的这样的脚本将不起作用,除非getElementsByName可以接受的正则表达式。
这是如何去解决这个任何想法?
有复选框TLD具有另一属性
<attribute>
<name>datafield</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue> </attribute>
可以使用该存储的“姓名”,然后通过它存取元件?
修改HTML输出为单个复选框强>
<input type="hidden" value="true" id="a1ON_hidden" name="mform_content_AboxesElement_hidden_2"/>
<input type="checkbox" onclick="setKeys(event);safeCall(selectAllCheckBoxes,this);" value="" title="Click here" id="a1ON" name="form_content_AboxesElement_2"/>
修改2 HTML输出一个全选复选框强>
<input type="hidden" name="mform_content_ABoxes_hidden_1" id="allABoxes_hidden" value="true"/>
<input type="checkbox" name="mform_content_ABoxes_1" id="marketsAll" title="Click to select" value="" onclick="setKeys(event);safeCall(selectAllCheckBoxes,this);"/>
解决方案
下面是一种开球:
function selectAllCheckboxes(checkboxElement) {
var allFormElements = checkboxElement.form.elements;
for (var i = 0; i < allFormElements.length; i++) {
var formElement = allFormElements[i];
if (formElement.name.indexOf('mform_content_ABoxes_') == 0) { // Check if its name starts with particular string.
formElement.checked = checkboxElement.checked;
}
}
}
您可能最终传递'mform_content_ABoxes_'
作为另一个函数的参数,或者甚至从checkboxElement.name
提取它,如果你知道在生成name
属性所使用的模式。
其他提示
在datafield
属性用于提供一个对象属性(如r_object_id
,r_version_label
等)作为数据发送到控制,这不会帮助许多在这种情况下。
一个不那么完美解决方案可以是设置runatclient="false"
在DMF标记和引用由在相应的部件不同的名称的复选框;然后,而不是你的JavaScript可以使用组件类的Java方法来获取上的复选框手柄和修改它们的值。该WDK生成的复选框的名称属性取决于组件名称,可能是他们在JSP顺序,所以我不知道,如果它是一个好主意,认为WDK总是会产生的复选框相同的名称。然而,在组件类处理总是比一个JavaScript功能慢。