2017-05-09 1 views
0

MVC 애플리케이션에 드롭 다운 목록이 있습니다. 드롭 다운 목록의 항목이 선택되면 (동일한 항목 포함) 함수를 트리거하려고합니다. 그러나 목록의 첫 번째 항목은 함수를 트리거 할 수 없으므로 비활성화해야합니다. 처음에는 유효한 코드를 가지고 있지만 유효한 옵션을 클릭하고 --Select--를 클릭하면 코드가 여전히 실행됩니다. 이 문제를 어떻게 해결할 수 있습니까?드롭 다운 목록 항목에 대한 Jquery 클릭 이벤트

MVC 제어

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

jQuery를 첫 번째 옵션

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

처음 옵션을 선택하고 이벤트를 발생 시키면 사용자가 다시 선택을 클릭하면 다시 시작하지 않겠습니까? – Lixus

+1

뭔가 개인적으로 뭔가를하는 대신에 나는 단지 함수를 체크 할 것입니다. if ($ ('ddlCountries') .val() == "") return; 그런 것 같아 –

+0

나는 아무것도 발사하기를 원하지 않는다. 이상적으로 그것을 클릭하면 아무 일도 일어나지 않을 것입니다. 하지만 항상 뭔가를 실행하도록 선택하면 DLL의 다른 항목이 필요합니다. – cooper

답변

0

저에게 선택된 옵션의 인덱스를 비활성화를 확인하기 위해 DDL 클릭 이벤트

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

jQuery를 트리거 할 이벤트 발생시 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를 수정했습니다.

그런 다음 --Select-box에 스타일을 추가하여 회색으로 표시했습니다. 여전히 클릭 할 수 있지만 아무 것도하지 않습니다. 정확히 무엇을 하려는지는 모르지만 충분히 닫으십시오.

+0

대신에 'on' 이벤트를 사용하십시오. $ ('# ddlCountries'). on ('click', 'option : gt (0)', function() {..})'http://stackoverflow.com/questions/10082031/why-use-jquery - 대신 클릭하지 않고 –

관련 문제