在没有确认对话框的情况下取消下拉列表的更改事件

Posted

技术标签:

【中文标题】在没有确认对话框的情况下取消下拉列表的更改事件【英文标题】:cancel change event for a Dropdown without confirmation dialog 【发布时间】:2016-10-09 16:19:32 【问题描述】:

当所选项目与另一个选择列表值进行比较时,我想取消更改事件。 我有 2 个选择列表。我想在 #SecondUnit_Id 更改时执行以下函数但不起作用。

var preval=$('#SecondUnit_Id').val();

$('#SecondUnit_Id').change(function()
  
  if($(this).val()==$('#UnitList_Id').val())
    
       msgbox("error","Duplicate");
       $(this).val(preval);
       return false;
    
    
    
    preval=$(this).val();
  
  );

但在以下代码中不起作用:

$(this).val(preval)

【问题讨论】:

你能为此做一个jsfiddle吗 试试:$("#SecondUnit_Id").val($("#SecondUnit_Id option[selected]").val()); Dose不起作用,它改变并没有阻止,另一方面先改变然后检查条件 jsfiddle.net/8suc4jhz @MohsenZahedi:我已经为你做了一个工作的 jsfiddle。检查我的答案 【参考方案1】:

它对我有用

Working Demo

<select id="UnitList_Id">
<option>A</option>
<option>B</option>
<option>C</option>
</select>


<select id="SecondUnit_Id">
<option>A</option>
<option>B</option>
<option>C</option>
</select>

var preval=$('#SecondUnit_Id').val();
alert(preval)
$('#SecondUnit_Id').change(function()
  //alert($('#UnitList_Id').val())
  if($(this).val() === $('#UnitList_Id').val())
    
       alert("error Duplicate");
       $(this).val(preval);
       return false;

    

    preval=$(this).val();

  );

问题出在您的 msgbox 插件中。正确使用相关库。

【讨论】:

第一项已更改,然后检查条件。 是的,您的代码是正确的,但它适用于选择,我有 select2。 @MohsenZahedi:你应该早点告诉。你在使用多选 select2 是的,我使用多选 select2。 那么你必须得到像 val1, val2 ,val3 这样的值。您可以将所有选定的值放入数组中,然后使用jQuery.inArray 检查是否选择了值。我希望这对你有帮助

以上是关于在没有确认对话框的情况下取消下拉列表的更改事件的主要内容,如果未能解决你的问题,请参考以下文章

如何在不刷新网页的情况下从下拉列表索引更改事件的数据库中检索数据

vuejs 下拉列表怎样默认选中

如果更改事件未绑定然后反弹,则下拉选项“更改”不起作用

如何在确认框的取消事件后强制 asp.net 列表框保留选定的值?

在下拉菜单更改期间确认保存

如何在不更改现有组件文件的情况下通过插件将日期类型更改为下拉列表