2014-01-10 3 views
1

У меня есть несколько полей выбора Whithin формы, как это:Получить идентификатор из отборной коробки

<form action="foo" method="post" id="form"> 
    <select id="one"> 
     <option value="foo1"></option> 
     <option value="foo2"></option> 
     <option value="foo3"></option> 
     </select> 
     <select id="two"> 
      <option value="bar1"></option> 
      <option value="bar2"></option> 
      <option value="bar3"></option> 
     </select> 
     <select id="three"> 
      <option value="baz1"></option> 
      <option value="baz2"></option> 
      <option value="baz3"></option> 
     </select> 
</form> 

Теперь, если любой из этих трех коробок изменить, я хочу знать, какой из них. Я пробовал это, как показано ниже, но я получаю только идентификатор первого окна. Должен ли я писать его для каждого выбора или есть способ получить идентификатор измененного блока выбора?

$(document).ready(function() { 
    $('#form').change(function() {  
     var strChosen = $('select').attr('id');  
     alert(strChosen);  
    }); 
}); 

ответ

5

Используйте this ключевое слово и изменить селектор $('#form select')

Demo

$(document).ready(function() { 
    $('#form select').change(function() { 
    var strChosen = $(this).attr('id'); 
    alert(strChosen); 
    }); 
}); 

Примечание: Вы можете также использовать .on() метод changeсобытие как

$('#form select').on('change',function() {}); 

Для получения дополнительной информации о синтаксисе, вы можете обратиться @ sbaaaang-х answer

+0

на() не будет лучше? : O – sbaaaang

+0

ОК, но не стоит ли это указывать :) – sbaaaang

+0

@sbaaaang Конечно, я продолжу это –

3
$(function(){ 
    $('select').on('change',function(){ 
    var id = $(this).attr('id'); 
    alert(id); 
    }); 
    }); 
1
$('select').change(function() { 
    alert($(this).attr('id')); 
}); 
0

Зарегистрировать обработчик изменения для select элемента, то внутри обработчика использовать this.id, чтобы получить идентификатор выбора элемента

$(document).ready(function() { 
    $('#form select').change(function() { 
     var strChosen = this.id; 
     alert(strChosen); 
    }); 
}); 

Демо: Fiddle

0

Вы используете .change() событие по форме. Это неверно.

Используйте элемент выбора с событием изменения, как показано ниже.

$(document).ready(function() { 

    $('select').change(function() { 

    var strChosen = $(this).attr('id'); 

    alert(strChosen); 

    }); 

Вот рабочая демонстрация: http://jsfiddle.net/n46Be/

0

Первое, что вам нужно, чтобы связать событие изменения в поле выбора вместо формы, как, что:

$(document).ready(function(){  
    $('select').change(function (e){   
    });  
}); 

то вы можете чтобы найти идентификатор измененного блока выбора, помещающего под кодом внутри обработчика изменений.

var selectedId = this.id; 

финалом код выглядеть, как показано ниже:

$(document).ready(function(){  
    $('select').change(function (e){ 
    var selectedId = this.id; 
    alert(selectedId); 
    });  
}); 

спасибо ..

Смежные вопросы