在选择相同值的情况下触发select字段的change()事件

7
我有以下选项:

像这样

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

我正在使用jQuery函数提交我的表单。
 $('#hall').change(

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

4个回答

4

点击时执行

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

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

简单而暴力的解决方案! - iplus26
2
当您使用点击事件时,它不会允许您进行选择。请查看此jsfiddle http://jsfiddle.net/58phdcj0/ - Roli Agrawal
@MazzCris 他可以设置一个条件来检查值是否被选择,并在满足所需条件时提交。我认为这并不难。 - Vibhesh Kaul
1
在Firefox中,调用该函数会立即执行,而无需先选择选项。 - Ken

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行的赋值是想要进行比较。 - Jezen Thomas

2

演示

你可以按照以下步骤进行:

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

注意:根据这里的评论,这在火狐浏览器中效果良好,但在谷歌浏览器中不起作用。您可以自行决定是否使用。


在Edge和Chrome 2023中无法工作。 - BestCoderBoy

0

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接