2017-05-09 138 views
0

我有一個MVC應用程序下拉列表。當選擇下拉列表中的項目(包括同一項目)時,我想觸發一個功能。但是,列表中的第一項無法觸發該功能,應該禁用它。我有一些代碼在下面,最初的作品,但點擊一個有效的選項後,然後單擊 - 再次選擇,它仍然會觸發代碼。我該如何解決?jquery點擊事件下拉列表項

MVC控制

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

jQuery來觸發DDL click事件

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

jQuery來禁用第一個選項

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

當您第一次選擇您的選項並觸發事件時,如果用戶再次單擊該選擇,您不希望它再次觸發嗎? – Lixus

+1

個人,而不是做一些奇特的事情,我只是把一個檢查功能。 if($('ddlCountries')。val()==「」)return;類似的東西 –

+0

我從不想選擇發射任何東西。理想地點擊它將不會執行任何操作(禁用)。但是當我選擇總是觸發某些東西時,我需要DLL中的任何其他項目。 – cooper

回答

0

獲取選中的選項的索引和檢查看看事件發生時是否大於0。索引是基於0的。

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

我刪除了代碼,以禁用第一個選項,因爲我無法得到它的第一個變化之後留下殘疾。我修改了jQuery的事件觸發到:

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

然後我說造型的 - 選擇 - 盒使其變灰。你仍然可以點擊它,但它不會做任何事情。不完全是我想要做的,但足夠接近

+0

請改用'on'事件。 ''('#ddlCountries')。on('click','option:gt(0)',function(){..})'http://stackoverflow.com/questions/10082031/why-use-jquery -on-INSTEAD-OF-點擊 –