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);
});  

jsFiddle

谢谢你的帮助!

4

1 回答 1

1

您的脚本中有一些错误。

1:它不会在鼠标点击上,而是在mousedown这样你可以预防默认行为。

2:正如我所说,您需要防止默认行为,因此您需要这样做:

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

3:使用.prop()返回一个布尔值,所以此刻,你的条件总是假的。您的情况可以简单地是if ($(this).prop('selected'))

4:由于阻止了默认行为,您需要手动添加或删除选定的选项。

5:因为您手动选择选项,所以var checked必须声明。

6:我不知道你想.each()用附加循环做什么,但我认为你不需要我的解决方案。在这种var checked情况下,也将毫无用处。

这是一个工作小提琴:http: //jsfiddle.net/akshC/1/

于 2013-06-11T14:58:56.363 回答