/ / HTML / JavaScript / JQuery Document.onChange pre skrytý prvok nefunguje - javascript, jquery, html, javascript-events

HTML / JavaScript / JQuery Document.onChange pre skrytý prvok nefunguje - javascript, jquery, html, javascript-events

Naprogramoval som výberové okno pre klienta, ktorý prídeaby sa zistilo, že dostane funkciu javascriptu tretej strany do skupiny divov a rozpätí a potom nakoniec skrytý prvok, ktorý obsahuje zvolenú hodnotu pri výbere prvku div / span. Existuje ďalšie pole na výber, ktoré som naprogramoval tesne pod týmto výberovým poľom, ktorý závisí od hodnoty prvého výberového poľa (tj používateľ si vyberie krajinu, a ak krajina obsahuje oblasti ako USA a Kanada, zobrazí sa okno s výberom štátu) , V každom prípade som si myslel, že by bolo najlepšie jednoducho pridať udalosť onChange novo vytvorenému skrytému prvku z prvého výberového poľa a potom napísať svoju vlastnú funkciu javascript, ktorá by zobrazila / skryla druhé výberové pole na základe hodnoty skrytých elementov, keď to sa zmenilo v dôsledku výberu krajiny (tretia strana javascript už aktualizuje hodnotu skrytého prvku s novo vybranou hodnotou krajiny). Pokúsil som sa robiť to v jQuery a len rovno javascript api, ale nič sa zdá, že funguje. Len FYI, keď tretia strana javascript reskript môj výber box do div / span "a skryté vstupné pole, skryté vstupné pole nie je má atribút id, takže odkazujem na element prostredníctvom jeho mena ("collect_data [7] [0]"). Tu je kód, ktorý som skúsil doteraz ...

<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("input-country").change(function(e){
console.log("testA");
});
})
jQuery("input-country").change(function(e){
console.log("testB");
});
jQuery(document).ready(function(){
jQuery(document.forms["myForm"]["collected_data[7][0]"]).change(function(e){
console.log("testC");
});
})
jQuery(document.forms["myForm"]["collected_data[7][0]"]).change(function(e){
console.log("testD");
});
document.forms["myForm"]["collected_data[7][0]"].onchange = function(){
console.log("testE");
};
document.getElementById("input-country").onchange = function(){
console.log("testF");
}
jQuery(document.forms["myForm"]["collected_data[7][0]"]).live("change",function(){
console.log("testG " + jQuery(this).val())
});
jQuery("input-country").live("change",function(){
console.log("testH " + jQuery(this).val())
});
jQuery(document).ready(function(){
jQuery(document.forms["myForm"]["collected_data[7][0]"]).live("change",function(){
console.log("testI " + jQuery(this).val())
});
})
jQuery(document).ready(function(){
jQuery("input-country").live("change",function(){
console.log("testJ " + jQuery(this).val())
});
})
</script>

odpovede:

7 pre odpoveď č. 1

Nebudete mať "zmeny" udalosti, keď skrytéprvok je programovo zmenený niektorým kódom JavaScript, ktorý je generovaný iba prehliadačom, keď je skutočne užívateľská akcia. Čo by bolo lepšie, keby bol JavaScript pre tretie strany explicitne nazvaný ".change ()" (metóda jQuery) na skrytom výbere.

Skrytý prvok jasne nikdy nebude cieľom interakcie používateľa.


0 pre odpoveď č. 2

"Vstupná krajina" nie je platný výber. Ďalej udalosť zmeny vyžaduje zaostrenie, zmenu hodnoty, straty zaostrenia (rozostrenie) - skryté vstupy nebudú mať taký sled udalostí, takže pri zmene ich hodnôt musíte manuálne spustiť zmenu.