Eu quero acionar o evento de mudança do dropdown em $ (document) .ready usando jquery.
Tenho uma lista suspensa em cascata para país e estado na página de detalhes do usuário. como posso definir o valor (que é retirado do banco de dados com base na id do usuário) para país e estado em MVC com C #.
jquery
asp.net-mvc
triggers
Prasad
fonte
fonte
Respostas:
Não conheço muito JQuery, mas ouvi dizer que permite disparar eventos nativos com esta sintaxe.
$(document).ready(function(){ $('#countrylist').change(function(e){ // Your event handler }); // And now fire change event when the DOM is ready $('#countrylist').trigger('change'); });
Você deve declarar o manipulador de eventos de mudança antes de chamar trigger () ou change (), caso contrário, ele não será disparado. Obrigado pela menção @LenielMacaferi.
Mais informações aqui .
fonte
trigger()
ou mesmochange()
conforme mostrado corretamente nesta resposta, ou seja, se o código do manipulador de eventos aparecer abaixo da chamada, nada acontece! :)Experimente isto:
$(document).ready(function(event) { $('#countrylist').change(function(e){ // put code here }).change(); });
Defina o evento de mudança e acione-o imediatamente. Isso garante que o manipulador de eventos seja definido antes de chamá-lo.
Pode ser tarde para responder ao postador original, mas outra pessoa pode se beneficiar da notação abreviada, e isso segue o encadeamento de jQuery, etc.
encadeamento de jquery
fonte
Experimente isto:
$('#id').change();
Funciona para mim.
Em uma linha junto com a definição do valor:
$('#id').val(16).change();
fonte
Se você estiver tentando vincular menus suspensos, a melhor maneira de fazer isso é ter um script que retorne uma caixa de seleção pré-construída e uma chamada AJAX que o solicite.
Aqui está a documentação do método Ajax do jQuery, se você precisar.
$(document).ready(function(){ $('#countrylist').change(function(e){ $this = $(e.target); $.ajax({ type: "POST", url: "scriptname.asp", // Don't know asp/asp.net at all so you will have to do this bit data: { country: $this.val() }, success:function(data){ $('#stateBoxHook').html(data); } }); }); });
Em seguida, tenha um intervalo em torno de sua caixa de seleção de estado com o id de "stateBoxHook"
fonte
alternativamente, você pode colocar o atributo onchange na própria lista suspensa, que onchange irá chamar certas funções jquery como esta.
<input type="dropdownlist" onchange="jqueryFunc()"> <script type="text/javascript"> $(function(){ jqueryFunc(){ //something goes here } }); </script>
espero que este te ajude, e por favor, note que este código é apenas um rascunho, não testado em nenhum ide. obrigado
fonte
Por alguma razão, as outras
jQuery
soluções fornecidas aqui funcionaram ao executar o script do console, no entanto, não funcionaram para mim quando acionadas a partir de Bookmarklets do Chrome .Felizmente, esta solução Vanilla JS (a
triggerChangeEvent
função) funcionou:/** * Trigger a `change` event on given drop down option element. * WARNING: only works if not already selected. * @see /programming/902212/trigger-change-event-of-dropdown/58579258#58579258 */ function triggerChangeEvent(option) { // set selected property option.selected = true; // raise event on parent <select> element if ("createEvent" in document) { var evt = document.createEvent("HTMLEvents"); evt.initEvent("change", false, true); option.parentNode.dispatchEvent(evt); } else { option.parentNode.fireEvent("onchange"); } } // ################################################ // Setup our test case // ################################################ (function setup() { const sel = document.querySelector('#fruit'); sel.onchange = () => { document.querySelector('#result').textContent = sel.value; }; })(); function runTest() { const sel = document.querySelector('#selector').value; const optionEl = document.querySelector(sel); triggerChangeEvent(optionEl); }
<select id="fruit"> <option value="">(select a fruit)</option> <option value="apple">Apple</option> <option value="banana">Banana</option> <option value="pineapple">Pineapple</option> </select> <p> You have selected: <b id="result"></b> </p> <p> <input id="selector" placeholder="selector" value="option[value='banana']"> <button onclick="runTest()">Trigger select!</button> </p>
fonte