0

ユーザーがタイミング間隔を選択できるフォームがあります。しかし、私は、が1つのオプションしか選択できないことだけを望んでいます。ドロップダウンから値を選択すると、jQueryは他のドロップダウンをリセットする必要があります。HTML(およびphpですが、関連性はありません):

<select class="span1" name="repeatminute" id="repeatIntervalTiming" onChange="disableOther(this)">
            <?php for($i=0; $i<61;$i++){ echo "<option>$i</option>"; } ?>
            </select>
            minute(s)</label>
              <label>
            <select class="span1" name="repeathour" id="repeatIntervalTiming" onChange="disableOther(this)">
            <?php for($i=0; $i<25;$i++){ echo "<option>$i</option>"; } ?>
            </select>
             hour(s)</label>
            <label>
            <label>
                 <select class="span1" name="repeatday" id="repeatIntervalTiming" onChange="disableOther(this)">
            <?php for($i=0; $i<32;$i++){ echo "<option>$i</option>"; } ?>
            </select>
            day(s)</label>
            <label>
            <select class="span1" name="repeatmonth" id="repeatIntervalTiming" onChange="disableOther(this)">
            <?php for($i=0; $i<13;$i++){ echo "<option>$i</option>"; } ?>
             </select>
             month(s)</label> 

これが私のjQueryの試みです:

function disableOther(caller){
    $('#repeatIntervalTiming').each(function(index) {
        if ($(this).text() != caller.textContent){
            $(this).val(0);
        }
    });
4

3 に答える 3

2

.not()jQueryには、一致した要素のセットから要素を削除するメソッドがあります。

$('select.span1').change(function() {
    $('select.span1').not($(this)).val('');
});

ここのドキュメント。

PS1:一意のIDを使用してください!IDセレクターをクラスセレクターに変更しました。

PS2:可能であればインラインJavaScriptは避けてください。私の例は目立たないです。

于 2012-10-22T10:56:23.497 に答える
1

onchange-functionを削除し、代わりにjQueryにイベントを追加しました。

$('select').change(function () {
  $('select').not($(this)).val('');
});​​

ここで実際の例を参照してください:http://jsfiddle.net/4pqdx/

編集私は間違ったjsfiddle-linkを持っていることに気づきました。新しいものが動作します!

于 2012-10-22T11:03:26.473 に答える
0

まず、同じhtmlドキュメントに同じIDを持つ2つの要素を含めることはできません。すべての選択ボックスに同じクラスを追加し、すべての異なるIDを指定します。選択ボックスのすべてのIDが異なる場合は、使用しているものを除くすべてをターゲットにできます。次のようなもので:

function disableOther(callerId){
    $('.selectBoxesClass:not('+caqllerId+')').val(0);
});
于 2012-10-22T11:01:40.497 に答える