Warum Auslösung ein click-Ereignis auf ein file-input löst auch das submit-Ereignis auf dem Formular?

Ich bin Kürschner ein file-input in ein HTML-Formular. Ich erreichte das Ergebnis, indem er den Eingang, dann habe ich dafür meinen eigenen button und onclick auf die Schaltfläche, die ich auslösen des click-Ereignisses auf den versteckten Eingang zu öffnen, die native Browser-Fenster. Das funktioniert auch, aber wenn ich in der Nähe der Fenster, die Javascript-submit-handler wird ausgelöst, auf die form (aber nicht reichen wirklich geschehen, nur das Ereignis ausgelöst wird).

Bereitete ich ein Turnschuh: http://jsfiddle.net/Ebcu5/

HTML:

<form id="form">
    <input id="file" type="file" name="photo" />
    <button id="upload">Browse</button>
</form>

JS:

$("#form").submit(function(){
    alert('submit event triggered');
});

document.getElementById('upload').addEventListener('click',function(){
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent("click", true, true);
    uploading = true;
    document.getElementById('file').dispatchEvent(evt);
});

CSS:

input#file { position: fixed; top: -100px; }
button { border: solid 3px black; border-radius: 3px; font-size: 18px; line-height: 20px; text-transform: uppercase; font-family: Arial; line-height: 31px; background: #fd6706; border-radius: 13px; }
  • Wahrscheinlich sind Sie miss-Diagnose des Problems. Ich sehe keine id="upload" - element, und ich bin bereit zu Wetten, es ist die Taste. Anklicken einer Schaltfläche löst den submit-Ereignis, es sei denn, die Taste wird ausdrücklich festgelegt als type="button". jsfiddle.net/Ebcu5/1
  • Warum Sie mit regelmäßigen JS und jQuery wie hier? Wäre viel sauberer und einfacher mit nur jQuery...
  • Sorry, es war ein copy&paste-Fehler... mein button hat die id="upload" - wie in der Geige. Hochgeladene Datei.
  • Nur weil code, der geboren wird, in verschiedenen Zeiten 🙂
Schreibe einen Kommentar