0

データベース エントリが入力された 8 つのドロップダウン ボックス (存在しない場合は空白) を持つフォームがあります。

例えば:

<select name='admin_id[]' id='admin_select1st' class='listbox medium'>
<select name='admin_id[]' id='admin_select2nd' class='listbox medium'>

など、8 つのエントリまで続きます。

私が(最終的に)やろうとしているのは、これらの選択ボックスの1つが変更されたときに、jQueryポストを使用してテキスト入力フィールドを更新することです。

現在起こっていることは、次の jQuery を使用すると、(変更したものだけでなく) 選択ボックスのそれぞれについてアラートが表示されることです。

<script type='text/javascript'>
$("[id^=admin_select]").change(function() {
 alert('Handler for .change() called.');
});
</script>

admin_select で始まる任意の ID に一致するように指示しているため、現時点ではこれは予期される動作です。私が知る必要があるのは、このコードを 1 回使用して、admin_select1st、admin_select2nd、admin_select3rd などごとにコードを 8 回繰り返す必要がないようにする方法はありますか?

4

3 に答える 3

0

あなたの質問の下のコメントで述べられているように、あなたが今持っているものはうまくいくはずです。

または、このようなものを試すことができます

$("[id^=admin_select]").each(

function( intIndex ){


    $(this).change(function(){
    alert(intIndex);
    });
}
);

私はそれをテストしていませんが、それはあなたが望むことをするはずです。

于 2012-09-10T14:19:24.057 に答える
0

重複アラートの問題は、8 つの選択ボックスを生成する while ループ内に が配置されていたため、コードが 8 回繰り返されたため、8 回アラートが発生したことでした。

while ループの外に移動したところ、意図したとおりに動作するようになりました。

于 2012-09-10T14:29:33.067 に答える
0

入力テキスト フィールド ID id resultを仮定します。

ID を一致させて要素を保持したくない場合は、クラス セレクターで取得できます。コードの一部を数回バインドする必要がある場合は、バインド解除を使用できます

$(document).ready(function(){
    $(".listbox.medium").each(function() {
        $(this).unbind("change").bind("change", function() {
        $("#result").val(sel.val());
        });
    });
 });

完全なコードはこちら

<html>
<head>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $(".listbox.medium").each(function() {
                $(this).change(function() {
                    $("#result").val($(this).val());
                });
            });
        });
    </script>
</head>
<body style="background-color: rgb(78, 120, 178);"><br />
    <input type="text" id="result" value="" />
    <select name='admin_id[]' id='admin_select1st' class='listbox medium'>
        <option></option>
        <option>1</option>
    </select>
    <select name='admin_id[]' id='admin_select2nd' class='listbox medium'>
        <option></option>
        <option>2</option>
    </select>
    <select name='admin_id[]' id='admin_select3st' class='listbox medium'>
        <option></option>
        <option>3</option>
    </select>
    <select name='admin_id[]' id='admin_select4nd' class='listbox medium'>
        <option></option>
        <option>4</option>
    </select>
    <select name='admin_id[]' id='admin_select5st' class='listbox medium'>
        <option></option>
        <option>5</option>
    </select>
    <select name='admin_id[]' id='admin_select6nd' class='listbox medium'>
        <option></option>
        <option>6</option>
    </select>
    <select name='admin_id[]' id='admin_select7st' class='listbox medium'>
        <option></option>
        <option>7</option>
    </select>
    <select name='admin_id[]' id='admin_select8nd' class='listbox medium'>
        <option></option>
        <option>8</option>
    </select>
</body>

于 2012-09-10T14:37:21.947 に答える