Das input
Element hat ein change
Ereignis, wenn die Formularfeldänderungen gefeuert wird. Also:
$('selector_for_your_form').delegate('input[type=file]', 'change', function() {
var form = $(this).closest('form');
form.append(/* ... markup for the new field ... */);
});
Das delegate
verwendet, was bedeutet, Sie müssen nicht explizit auf das neue Element das Ereignis haken.
Live example(Ich gehe davon aus Ihrem Markup ein wenig interessant — wäre und sicherlich besser aussehenden — als dort gezeigt)
aktualisieren: Leider change
nicht sofort auf einigen Browsern abfeuert (Es wartet, bis der Benutzer den Fokus beispielsweise vom Feld auf IE7 entfernt). jQuery behandelt diese Seltsamkeit für Sie, wenn Sie das Ereignis direkt anhängen, aber nicht, wenn Sie delegate
verwenden. Also hier ist eine Alternative:
$('selector_for_your_form input[type=file]').change(fileChangeHandler);
function fileChangeHandler() {
var form = $(this).closest('form');
$('<input type="file">').change(fileChangeHandler).appendTo(form);
}
Wenn Ihr Markup komplexer als nur die input
selbst (und ich nehme an, es ist), müssen Sie sicher sein, Sie change
auf dem richtigen Element sind Einhaken.
Live example
Vielen Dank, ich habe vergessen zu ändern völlig und wurde mit Unschärfe Ereignis durcheinander .... kein Wunder, es hat nie funktioniert – Bluemagica
@Blue: Keine Sorge, froh, dass geholfen. :-) –