0

データベースのデータから生成されたテーブルがあります。3 つの行と 2 つのセルがある場合があります。

各セルには、チェックボックスと 2 つの非表示のフォーム フィールドがあります。

したがって、典型的な行は次のようになります。

<tr>
<td>
<input type="checkbox" id="Assign" onclick="setchanged(this);">
<input type="hidden" id="hfChanged" value="0">
<input type="hidden" id="hfAgentID value="272">
</td>
<td>
<input type="checkbox" id="Assign" onclick="setchanged(this);">
<input type="hidden" id="hfChanged" value="0">
<input type="hidden" id="hfAgentID value="324">
</td>
</tr>

要件は、チェックボックスがクリックされたときに、同じセルの hfChanged 非表示フィールドの値を 1 に設定する必要があることです。

これは Internet Explorer で機能します。

function setchanged(me)
{
me.parentElement.all("hfChanged").value = 1;
}

Firefox や Chrome などの標準準拠ブラウザーで hfChanged の値を設定するにはどうすればよいですか?

4

3 に答える 3

1

ID の代わりに繰り返しクラスを使用する

<tr>
    <td>
    <input type="checkbox" class="Assign" onclick="setchanged(this);">
    <input type="hidden" class="hfChanged" value="0">
    <input type="hidden" class="hfAgentID value="272">
    </td>
    <td>
    <input type="checkbox" class="Assign" onclick="setchanged(this);">
    <input type="hidden" class="hfChanged" value="0">
    <input type="hidden" class="hfAgentID value="324">
    </td>
</tr>

次に、クラス名で選択するように関数を変更し、結果を繰り返します。

function setchanged(me) {
    var changed = me.parentNode.querySelectorAll(".hfChanged");

    for (var i = 0; i < changed.length; i++) {
        changed[i].value = 1;
    }
}

.querySelectorAllそれが重要な場合、このメソッドはIE6/7では機能しません。そうであれば、互換性を高めるために少し調整することは難しくありません。


同じセルに 1 つしかないことがわかりました。その場合、代わりにこれを行うことができます。

function setchanged(me) {
    me.parentNode.querySelector(".hfChanged").value = 1;
}
于 2013-01-21T16:48:09.110 に答える
0

次の関数を使用して、この回答に示されている次の要素を見つけることができます

function next(elem) {
    do {
        elem = elem.nextSibling;
    } while (elem && elem.nodeType != 1);
    return elem;        
}

作業デモはこちら

コード:

function setchanged(me){
    next(me).value = me.checked == true ? 1 : 0;
}

function next(elem) {
    do {
        elem = elem.nextSibling;
    } while (elem && elem.nodeType != 1);
    return elem;        
}
于 2013-01-21T16:55:16.603 に答える
0

このコードはテストされていませんが、出発点になる可能性があります。

$("input[type=checkbox]").change(function(){
     $(this).siblings(".hfChanged").prop("value", this.checked ? 1 : 0);
});

注: id をクラスに変更します。

于 2013-01-21T16:46:26.250 に答える