【问题标题】:trigger change() even on selecting the same value for select field即使为选择字段选择相同的值,也会触发 change()
【发布时间】:2015-11-03 06:01:10
【问题描述】:

我有这样的选择

<select name="hall" id="hall">
  <option>1</option>
  <option>2</option>
  <option>3</option>
  <option>4</option>
  <option>5</option>
</select>

我正在使用 jquery 函数来提交我的表单

 $('#hall').change(

但是当再次选择相同的值时,我希望它被触发。 我该怎么做?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

点击操作

$('#hall').on('click',function(){

   if(this.selectedIndex == -1) {
      alert('select one answer');
   }
   else{
      // do whatever you want!
   }        
});

【讨论】:

  • 简单暴力的解决方案!
  • 所以当你使用点击事件时它不会让你选择。检查这个jsfiddelhttp://jsfiddle.net/58phdcj0/
  • @MazzCris 他可以设置一个条件来检查是否选择了该值,并在满足所需条件时提交。我认为这不会那么困难。
  • 在 Firefox 中,在选择选项之前立即调用该函数
【解决方案2】:

试试这个:

var prevVal;
$('#hall').on('focus', function (){
     prevVal=$( "#hall:selected" ).text();
});

$('#hall').on('change', function (){
     if(prevVal=$( "#hall:selected" ).text()){
          alert('same val selected');
     }
});

【讨论】:

  • 我不知道这会如何工作,除非第 7 行的分配是为了进行比较。
【解决方案3】:

DEMO

你可以这样做:

$("#hall option").on('click',function(){
    $("#hall").trigger('change');
});
$("#hall").on('change',function(){
   alert('changed'); 
});

注意:根据评论here,这在 FF 中效果很好,但在 chrome 中效果不佳。您可以自行承担使用它的风险

【讨论】:

    【解决方案4】:

    @Vibhesh Kaul 解决方案适用于我在 Windows 上,但不适用于我在 Mac 上的客户。

    这是我的解决方案:

    var previous_value = '';
    $(document).on('click', 'select#hall', function () {
      // click on select
      if(previous_value == '') {
        previous_value = $(this).val();
      }
      // click on option, check if same value is chosen
      else if($(this).val() == previous_value) {
        // trigger a change
        $(this).trigger('change');
      }
    });
    
    $(document).on('blur', 'select#hall', function () {
      // reset the previous value of the select
      previous_value = '';
    });
    
    $(document).on('change', 'select#hall', function () {
      alert('test example');
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      相关资源
      最近更新 更多