Javascript 防止select2下拉菜单调用函数的自动触发事件
编辑: 我的目标是,当手动选择一个下拉列表时,它只应该设置另一个下拉列表的值,而不是在更改事件中调用其方法 我有两个“select2”下拉列表Javascript 防止select2下拉菜单调用函数的自动触发事件,javascript,jquery,jquery-select2,Javascript,Jquery,Jquery Select2,编辑: 我的目标是,当手动选择一个下拉列表时,它只应该设置另一个下拉列表的值,而不是在更改事件中调用其方法 我有两个“select2”下拉列表 @*Dropdown 1*@ <div > @Html.DropDownList(Model.DDL1, new SelectList(GetCmnlSection(), "Value", "Text", Model.DDL1),new { onchange = "DDL1Operation();" }) </div> @*D
@*Dropdown 1*@
<div >
@Html.DropDownList(Model.DDL1, new SelectList(GetCmnlSection(), "Value", "Text", Model.DDL1),new { onchange = "DDL1Operation();" })
</div>
@*Dropdown 2*@
<div >
@Html.DropDownList(Model.DDL2, new SelectList(GetCmnlSection(), "Value", "Text", Model.DDL2),new { onchange = "DDL2Operation();" })
</div>
<script type="text/javascript">
$(function () {
var $ddl1 = $("select[name$=DDL1]");
$ddl1.select2();
var $ddl2 = $("select[name$=DDL2]");
$ddl2.select2();
}
</script >
我想要达到的是什么
更新
@*City Dropdown*@
@Html.DropDownList(Model.chiefTownProp, new SelectList(GetchiefTown(), new { onchange = "PopualateFromCity();" })
@*Commune Dropdown*@
@Html.DropDownList(Model.communeProp, new SelectList(Getcommunes(), "Value", "Text", Model.communeId),new { onchange = "PopulateFromCommune();" })
及其功能
function PopualateFromCity() {
$("select[name$=communeId]").val('1').trigger("change.select2");
}
function PopulateFromCommune() { alert('PopulateFromCommune');}
“trigger(“change.select2”)”也无助于停止PopulateFromCommune的onchange事件select2不侦听下拉列表上的自定义事件,但您可以使用jQuery的事件名称空间来通过触发change.select2事件将触发器范围限制为select2。您必须相应地编辑函数DDL1操作():
function DDL1Operation() {
$("select[name=DDL2]").val('abc').trigger('change.select2');
}
然后需要用jquery绑定onclick处理程序:
$("select[name=DDL1]").change(function(){DDL1Operation()});
$("select[name=DDL2]").change(function(){DDL2Operation()});
并从.NET代码中的
元素中删除onclick属性:
@*City Dropdown*@
@Html.DropDownList(Model.chiefTownProp, new SelectList(GetchiefTown())
@*Commune Dropdown*@
@Html.DropDownList(Model.communeProp, new SelectList(Getcommunes(), "Value", "Text", Model.communeId))
好的,您的意思是,通过实现“.trigger('change.select2');”它将只在DDl2手动更改时工作。。是吗?
.trigger('change.select2')
将阻止触发onchange事件onchange=“DDL2Operation();”
。因此,如果手动更改选择“DDL2”,将调用DDL2Operation()
,但是DDL1操作()
将不再调用DDL2Operation()
。好的,这是我想要的,让我来处理它,我会让您知道不,它仍然在调用第二个下拉菜单的一次更改事件是!!!!这就像一个魅力,由于递归调用,flag有太多的bug,所以最终我不得不放弃这个想法,这是我的解决方案。谢谢
@*City Dropdown*@
@Html.DropDownList(Model.chiefTownProp, new SelectList(GetchiefTown())
@*Commune Dropdown*@
@Html.DropDownList(Model.communeProp, new SelectList(Getcommunes(), "Value", "Text", Model.communeId))