Ich habe ein Skript, das eine span
erstellt, um eine select
Tag zu vermuten, und blendet dann die select
. Dies ermöglicht ein einfacheres CSS-Styling, da ich die span
einfacher formatieren kann, im Vergleich zu einem unverwüstlichen select
Tag. Mit der Spanne, habe ich eine Dropdown-Liste, die ul
Tag ist, das Problem ist, wenn ich einen Wert auf die "Fake-Select" wählen und Javascript verwenden, um den Wert von versteckten "echten" wählen, wird die onchange
nicht ausgelöst. Der Zweck ist, ‚none-Techies‘, die gestylten wählt wollen zu helfen, und ich möchte daher alle Ereignisse erfassen sie an die Auswahl wie onchange
hinzugefügt haben, onfocus
und onreset
So erfassen Sie Ereignisse auf dynamisch geändert wählt
Im folgenden Code für Beispiel: wenn Sie die Option manuell auswählen, das onchange
Ereignis wird ausgelöst, während die timeout
Funktion nicht das Ereignis auslöst
<script>
var select = document.getElementsByTagName('select')[0];
function changed() {
var select = document.getElementsByTagName('select')[0];
select.value = 'that is optionification fam!';
}
setTimeout(changed, 1000);
</script>
<select onchange="alert('Object has changed!')">
<option value="">Select an Option</option>
<option>this is option</option>
<option>that is optionification fam!</option>
<option>these are options</option>
<option>those a options</option>
<option>I like options</option>
<option>I don't like options</option>
<option>this is an option</option>
</select>
UPDATE:
Von W3C:
Ereignisse, die vom User-Agenten generiert werden, entweder als Ergebnis der Interaktion mit dem Benutzer oder als direkte Folge von Änderungen an den DOM, durch die User-Agenten mit Privilegien vertraut sind, den Ereignisse, die nicht gewährt werden Wird vom Skript über die DocumentEvent.createEvent-Methode ("Event") generiert, mithilfe der Event.initEvent() -Methode geändert oder über die EventTarget.dispatchEvent() -Methode ausgelöst. Das Attribut "isTrusted" für vertrauenswürdige Ereignisse hat den Wert "true", während nicht vertrauenswürdige Ereignisse den Wert "isTrusted" für "false" aufweisen.
Die meisten nicht vertrauenswürdigen Ereignisse sollten keine Standardaktionen auslösen, mit Ausnahme von Click- oder DOMActivate-Ereignissen. Diese Ereignisse lösen die Standardaktion eines Aktivierungsauslösers aus (weitere Informationen finden Sie unter Aktivierungsauslöser und -verhalten). Diese nicht vertrauenswürdigen Ereignisse haben den Attributwert isTrusted von false, initiieren jedoch weiterhin Standardaktionen für die Abwärtskompatibilität. Alle anderen nicht vertrauenswürdigen Ereignisse müssen sich so verhalten, als wäre die Event.preventDefault() -Methode für dieses Ereignis aufgerufen worden.
Da isTrusted
ist ein lesbarer nur als auch Attribut, alle Skript Änderungen sind ‚Set-in-Stein nicht vertrauten‘ ... und damit das Problem!
Kann denkt jemand eine Arbeit um, wo kann ich
- erstellen „fake“/künstliche Ereignis-Antworten
- Oder die Wert der Auswahl ändern Eingabe mit Benutzer **