下拉列表项的Jquery单击事件

时间:2017-05-09 14:21:16

标签: javascript jquery asp.net-mvc

我在MVC应用程序中有一个下拉列表。当选择下拉列表中的项目(包括相同的项目)时,我想触发一个功能。但是,列表中的第一项不能触发该功能,应该禁用它。我在下面有一些代码最初工作,但是在单击有效选项然后单击 - 再次选择 - 之后,它仍然会触发代码。我该如何解决这个问题?

MVC控制

@Html.DropDownList("ddlCountries", (IEnumerable<SelectListItem>)ViewBag.Countries, "--Select--", new { @class = "form-control" })

jQuery触发DDL点击事件

$('#ddlCountries option:not(:first)').click(function () {
            runCode()
});

jQuery禁用第一个选项

jQuery('#ddlCountries option:contains("--Select--")').attr('disabled', 'disabled');

2 个答案:

答案 0 :(得分:0)

获取所选选项的索引,并在事件触发时检查它是否大于0。索引是基于0的。

$('#ddlcountries').on('change', function() {
  var index = $(this).find('option:selected').index();
  if (index > 0) {
    alert('yay');
    runCode();
  } else {
    alert('nay');
    return;
  }
})

答案 1 :(得分:0)

我删除了代码以禁用第一个选项,因为我无法在第一次更改后让它保持禁用状态。我修改了jQuery以触发事件:

jQuery('#ddlCountries').find('option:gt(0)').click(function () {
    runCode()
});

然后我在--Select--框中添加样式以使其变灰。你仍然可以点击它但它不会做任何事情。不完全是我试图做的但足够接近