1

id配列項目として繰り返される を含むフォームのテーブルがあります。テーブルの 1 行を次に示します。

<tr>
    <td>
        <input name="data[]" id="data[]" onkeyup="updates_toggle(this);" value="<?php echo($item['data']); ?>" size="40" maxlength="100"/>
    </td>
    <td>
        <input name="VAT_in[]" id="VAT_in[]" onkeyup="updates_toggle(this);" value="<?php echo($item['VAT_in']); ?>" size="8" maxlength="10"/>
        <input type="hidden" size="1" name="updates[]" id="updates[]" value="0"/>
   </td>
</tr>

<script type="text/javascript">
    function updates_toggle(this_ref){
        if(ups=this_ref.???????????('updates[]')){
            ups.value="1";
        }
        return true;
    }
</script>

その行の隠し値を「1」にupdates_toggle()更新する JavaScript 関数が必要です。updates[]フォームが送信されたときに、後でデータベースを更新できるようにします (変更された項目のみ)。

updates[]適切な参照を渡す方法、および/またはjQuery を使用せずに JavaScriptの正しいインスタンスを参照する方法を教えてください。

4

3 に答える 3

0

updates_toggle() を updates_toggle(dataId) に変更します。入力要素を関数に渡すことができます。

onKeyUp="updates_toggle(this);"

関数内で、タイプtrの最も近い親要素を識別し、このタグ内で隠しフィールドを見つけることができます。jQuery では、これは次のようになります。

$(this).closest('tr').find('input[type=hidden]').val(1);

プレーンな JavaScript では、関数は次のようになります。

function updates_toggle(field) {
var p = field.parentNode;
    while(p.tagName != 'TR') {
        p = p.parentNode;
    }
    var oldVal = p.children[1].children[1].value;
    p.children[1].children[1].value = oldVal + 1;
}

ここであなたの例を解決しました(コードを少しきれいにしました):http://jsfiddle.net/Tfk3C/2/

于 2013-08-25T00:08:33.667 に答える
-1

これを updates_toggle() に入れてください

document.getElementById("updates[]").value = 1
于 2013-08-25T00:29:48.613 に答える