0

私は 3 つのチェックボックスを持っており、ユーザーが一度に 1 つずつ選択する必要があるため、ユーザーがチェックボックスの 1 つを選択するたびにコードを作成します。他のすべての選択を解除し、次を使用して選択したものを確認します。

$('input.myclass').click(function () {
    $('input.myclass:checked').not(this).removeAttr('checked');
});

このコードのすぐ下で、チェックされたチェックボックスの値も取得し、ページのどこかに表示します (簡単にするために、アラートにします)。そのために私は使用しています:

var sFilter = "";
$('input.myclass[type=checkbox]').each(function () {
    sFilter = sFilter + (this.checked ? $(this).val() : "");
});

現在、何が起こっているかはsFilter常に最近選択されたチェックボックスと最後に選択されたチェックボックスです。のように: チェックボックス 1,2,3 がある場合。最初にチェックボックス 2 を選択するとアラートに 2 が表示されますが、 3 を選択すると 2,3 が表示されます。ここで起こっていることは、コードが特定のクラスのすべてのチェックボックスを通過する時点であると推測します.関数checkedを使用してクリア/チェックを外したことを考えると、チェックボックス2があると考えられclickます.

この問題を回避する方法について誰か提案がありますか?

ありがとう

注意: UI が原因で、ラジオボタンを使用できません。

4

2 に答える 2

2

可能な解決策の 1 つは、これらのチェックボックスのクリック イベントでこれらのチェックボックスをループすることです。

ボタンをクリックしてそれらをループしても問題ありません。

このJsfiddleをチェックしてください - http://jsfiddle.net/LMgFz/

$('input.myclass').click(function () {
$('input.myclass:checked').not(this).removeAttr('checked');
 var sFilter = "";
$('input.myclass[type=checkbox]').each(function () {
    sFilter = sFilter + (this.checked ? $(this).val() : "");
});
alert(sFilter);
});

それが理にかなっている場合は?

于 2013-09-12T13:51:41.303 に答える
1

このようなことを試してみませんか (ここにjsFiddleがあります):

var sFilter = "";

$('input.myclass').click(function () {
    $('input.myclass:checked').not(this).removeAttr('checked');
    sFilter = (this.checked ? $(this).val() : "");
    alert(sFilter);
});

クリックするたびに更新sFilterし、それを使って好きなことをします。

選択を解除したときに「警告」したくない場合は、次のようなことを試してください。

var sFilter = "";

$('input.myclass').click(function () {
    $('input.myclass:checked').not(this).removeAttr('checked');
    sFilter = (this.checked ? $(this).val() : "");
    if (sFilter != "") alert(sFilter);
});
于 2013-09-12T13:58:29.727 に答える