change()函数不适用于所选值

时间:2017-04-29 09:20:44

标签: jquery html

如果我选择所选的选项文字" A" change()函数不起作用。但是如果我选择其他一些像B,C那么它的工作正常,之后如果我选择它的A工作很好。为什么它不能在开始工作。是否有可能触发该功能。请帮忙



$('#type').change(function() {
  var val = $('#type option:selected ').val();
  alert(val);
})

$(function() {
  $('#type').val('1');
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="type">
  <option >--Select--</option>
  <option value="1">A</option>
  <option value="2">B</option>
  <option value="3">C</option>
</select>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

一种可能的选择是跟踪选择是否已打开,如果有人也点击它,则调用函数

此外,您将当前值保存在属性中,然后在mouseup事件中进行比较(如果它们相同),如果您手动触发change事件,则为{{1因为用户单击了相同的选项,所以事件不会自动触发。

change
$(document).ready(function() {

  var isOpen = false;

  // Init any selection
  $('#type').attr('data-val', $('#type').val());

  $('#type').change(function() {
    selectWasClicked($(this).val());
  })

  $('#type').mouseup(function() {
    if (!(isOpen)) {
      isOpen = true;
      return;
    }
    isOpen = false;
    if ($(this).attr('data-val') == $(this).val()) {
      $(this).trigger("change");
    }
    $(this).attr('data-val', $(this).val());
  })

  $('#type').blur(function() {
    isOpen = false;
  })

  function selectWasClicked(val) {
    console.log('someone clicked on the select value: ', val);
  }

});