0

私は、DropDownLists と CheckBoxes などを使用して asp.net mvc3 アプリケーションに取り組んでいます。

ドロップダウンリストの定義済みオプションが選択されている場合、CheckBox を無効にする JavaScript を作成しました。

$(function() {
    $('#dropdownlistId').change(function() {
        if (this.value == '1st option') {
          $('#checkboxId').attr('disabled', disabled);
        } else {
          $('#checkboxId').removeAttr('disabled', disabled);
        }
    });
});

これは正常に機能しますが、スクリプトはドロップダウンリストの変更にのみ反応します

したがって、「最初のオプション」がドロップダウンリストの一番上にあり、デフォルトとして自動的に選択されている場合、スクリプトはチェックボックスを無効にしません。ユーザーが別のオプションを選択し、もう一度「最初のオプション」を選択した場合のみ...

私を助けてください :)

PS: マウスの代わりにキーボードを使用してドロップダウン リストのオプションを切り替えると、スクリプトも機能しません。

私は実際にJavaScriptを行うことができないので、スクリプトを改善するのを手伝ってもらえればとても親切です:/

4

5 に答える 5

1
$(function() {
    var $cb = $('#checkboxId');
    $('#dropdownlistId').change(function() {
        if (this.value == '1st option') {
          $cb.prop('disabled', true);
        } else {
          $cb.prop('disabled', false);
        }
    }).trigger('change');
});

halnderlを追加した後の変更イベントのトリガーの違い。2番目の質問について-キーボードを使用すると、selectがフォーカスを失う(「blur」)ときに「change」イベントがトリガーされます。

于 2012-12-05T16:35:04.800 に答える
1

次のようなことができます。

function setCheckBox() {
     if (this.value == '1st option') {
        $('#checkboxId').attr('disabled', disabled);
      } else {
         $('#checkboxId').removeAttr('disabled', disabled);
      }
}
$(function() {
    setCheckBox();//do this on load..
    $('#dropdownlistId').change(function() {
      setCheckBox();//and on change
    });
});
于 2012-12-05T16:33:48.973 に答える
0

CheckBoxコントロールを定義するときは、disabled属性を使用してデフォルトで無効にします。そうすれば、すでに無効になっており、最初から無効にするためにJavaScriptを追加する必要はありません。

次のようになります。

@Html.CheckBoxFor(model => model.IsCheckBox, new { @disabled = "true" })
于 2012-12-05T16:35:26.650 に答える
0

このように document.ready に書き込む必要があるそのドロップダウンリストの変更時に無効化関数を呼び出すため、コードは必要に応じて少し間違っているようです

$(document).ready(function () {if(document.getElementById("dropdownlistId").value="1stoption")
{
document.getElementById('checkboxId').style.visibility = 'hidden';
}
else
{//do something whatever you wish here in else condition

}
}

それが役に立てば幸い!!!

于 2012-12-05T18:08:26.130 に答える
0
$(function() {
    var $cb = $('#checkboxId');
    $('#dropdownlistId').change(function() {
        if (this.value == '1st option') {
          $cb.attr('disabled', disabled);
        } else {
          $cb.removeAttr('disabled', disabled);
        }
    }).trigger('change');
});

今では魅力のように機能します、ありがとう

于 2012-12-08T14:48:04.803 に答える