すべて選択チェックボックスを使用して、チェックボックスの列を選択しようとしています。
そこで、一度にチェックしたいすべてのものに同じ名前の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>
それを使用して「名前」を保存し、それを介して要素にアクセスできますか?
個々のチェックボックスの EDIT HTML OUTPUT
<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"/>
selectall チェックボックスの EDIT 2 HTML OUTPUT
<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);"/>