0

ここに数日いると、間違った方向に進んでいるような気がします。複数のクライアントの選択を追跡する
ために a を使用しようとしています。<select>

<div id="ajax">
<select id="select_site" name="site" multiple>
    <option value="" selected>checked</option>
    <option value="" selected>checked</option>
    <option value="">unchecked</option>
    <option value="">unchecked</option>
</select>
<button id="continue" type="button">Save</button>
</div>  

望ましい結果:チェックさ
れたアラートをクリックします(「チェックされたものから減算」)
チェックされていないアラート(「チェックされたものに追加」)をクリックします

$('#ajax').on('click', '#select_site option', function () {
  var checked = $('#select_site option:selected');
  if ($(this).prop('selected') == 'selected') {
    alert('subtract from checked');
  } else {
    alert('add to checked');
  }
  $('#select_site').empty();
  $.each(checked, function (i, v) {
    $('#select_site').append(v);
  });
  });  

$('#ajax').on('click', '#continue', function () {
  var checked = $('#select_site option:selected');
  alert(checked);
});  

jsフィドル

助けてくれてありがとう!

4

1 に答える 1

1

あなたのスクリプトにはいくつかの間違いがあります。

1: マウス クリックではなくオンにmousedownなるため、デフォルトの動作を防ぐことができます。

2:私が言ったように、デフォルトの動作を防ぐ必要があるので、これをnned:

pseudo-on(function(e){
    e.preventDefault()
    //Your code
})

3:.prop()ブール値を返すため、現時点では、条件は常に false です。あなたの状態は単にif ($(this).prop('selected'))

4: デフォルトの動作が妨げられているため、選択したオプションを手動で追加または削除する必要があります。

5: オプションを手動で選択するため、 をvar checked宣言する必要があります。

6: 追加を伴うループで何をするつもりだったのかわかりませんが.each()、私のソリューションでは必要ないと思います。このvar checked場合も役に立ちません。

ここで働くフィドル:http://jsfiddle.net/akshC/1/

于 2013-06-11T14:58:56.363 に答える