2014-11-19 2 views
1

HTML의 <select options> 태그에 문제가 있습니다.Jquery select selected option trouble

드롭 다운의 선택된 값을 사용하여 AJAX 호출에서 뭔가 할 수 있도록 jQuery와 Javascript를 사용하여 선택 드롭 다운의 값을 변경하려고합니다. 그러나 그것을 변경 한 다음 변경하기 전에 선택한 이전 값으로 되돌리고 싶습니다. 문제가 발생합니다 ... 여전히 드롭 다운 옵션에서 값을 선택하거나 선택할 수 있지만 <select option> 단추/양식 상자는 내가 마지막으로 입력 한 값입니다.

해결 방법이 있습니까? 여기에 내 코드가있다.

//retrieving value of the selected option 
var selBlock = $("#block_name option:selected").text(); 

//changing the value of the selected option from the dropdown to the very first option 
$("#block_name").change(function() { 
    $("#block_name option:first").attr('selected','selected'); 
}).change(); 

//changing back the value of the selected option on the dropdown by reverting to the old value saved in selBlock 

$("#block_name").change(function(){ 
    $("#block_name").find('option:selected').removeAttr("selected"); 
    document.getElementById('block_name').value = selBlock; 
}).change(); 

나를 단순히는 AJAX 호출을 호출하고 데이터베이스에서 새 값을 검색합니다 변경하기 때문에, 드롭 다운에서 선택한 옵션을 변경하여 실시간 효과를 얻을 수있는 방법이다. SSE 또는 AJAX long polling을 사용하지 않기로 선택했기 때문에 서버에 스트레스를 가할 것입니다.

+0

다음과 같은 몇 가지 문제가 있습니다. 1) 동일한 요소에 대한 change 이벤트에 두 번 바인딩하고 다른 바인드가 수행하는 작업에 대응하고, 2) 변경 이벤트를 바인딩 한 직후에 변경 사항을 발생시키고, 3) 어쨌든 첫 번째 옵션 이외의 선택 목록에서 아무 것도 선택할 수 없도록 변경된 값을 무시합니다. 그 외에도 jQuery를 사용하여 아약스 호출의 값을 변경해서는 안되며, 사용자가 선택한 모든 값을 사용해야한다. $ ("# block_name"). val()이 작동한다. –

답변

0

난 당신이 무슨 일을하는지의 아이디어를 얻을 경우

  • 보다는 (
  • 대신 변경 이벤트 핸들러를 정의하는 select 요소의 value에 대한 이동합니다 option 선택의 text를 얻을 수

    : 2)
  • 여기

코드가 같아야 어떻게 이벤트를 값을 변경 한 다음 trigger

//Save your DOM search so you don't have to repeat it 
var sel = $("#block_name"); 

//retrieve value of the selected option 
var selBlock = sel.val(); 

//change the value of the selected option from the dropdown to the very first option 
//& trigger change 
sel.find('option:first').prop('selected', true).end().trigger('change'); 

//change back the value of the selected option on the dropdown by reverting to 
// the old value saved in selBlock & trigger change event 
sel.val(selBlock).trigger('change'); 
관련 문제