Biorąc pod uwagę następujące kwestie:
<select id="location">
<option value="a" myTag="123">My option</option>
<option value="b" myTag="456">My other option</option>
</select>
<input type="hidden" id="setMyTag" />
<script>
$(function() {
$("#location").change(function(){
var element = $(this);
var myTag = element.attr("myTag");
$('#setMyTag').val(myTag);
});
});
</script>
To nie działa ...
Co muszę zrobić, aby zaktualizować wartość ukrytego pola do wartości myTag po zmianie zaznaczenia. Zakładam, że muszę coś zrobić, aby uzyskać aktualnie wybraną wartość ...?
Spróbuj tego:
źródło
Dzieje się tak, ponieważ elementem jest „Wybierz”, a nie „Opcja”, w której znajduje się niestandardowy znacznik.
Spróbuj tego:
$("#location option:selected").attr("myTag")
.Mam nadzieję że to pomoże.
źródło
Spróbuj tego:
W takiej funkcji dla
change()
,this
odnosi się do wybierz, nie wybranej opcji.źródło
Załóżmy, że masz wiele wyborów. Można to zrobić:
źródło
Jesteś bardzo blisko:
źródło
Prostsza składnia, jeśli jedna forma.
var option = $('option:selected').attr('mytag')
... jeśli więcej niż jeden formularz.
var option = $('select#myform option:selected').attr('mytag')
źródło
Oto cały skrypt z wywołaniem AJAX, aby kierować na jedną listę na stronie z wieloma listami. Żadne z powyższych rzeczy nie działało dla mnie, dopóki nie użyłem atrybutu „id”, mimo że nazwa mojego atrybutu to „ItemKey”. Za pomocą debugera
Debugowanie Chrome
Mogłem zobaczyć, że wybrana opcja ma atrybuty: z mapą do „id” JQuery i wartości.
Oto plik JSON do utworzenia ...
Mam nadzieję, że to pomoże, dziękuję wszystkim za doprowadzenie mnie tak daleko.
źródło
Spróbuj tego przykładu:
źródło
źródło
Możesz również wypróbować ten jeden z
data-myTag
źródło
Najłatwiejszy,
źródło