2016-06-30 12 views
-1

Ich habe mehrere Datei-Upload/Kamera-Eingänge auf meiner Website, sie alle tun das gleiche, aber senden verschiedene Attribute mit ihnen:.on ('change', '.class') wählt das falsche Element (nur das erste)

<!--- INPUT 1 --- (MODULE 111111) --> 
<input type="file" capture="camera" class="uploadImage" 
    data-schedule="1" 
    data-schedule-object="27" 
    data-schedule-object-module="111111"     
    id="cameraInput_1" 
    name="cameraInput_1"> 

<!--- INPUT 2 --- (MODULE 222222) --> 
<input type="file" capture="camera" class="uploadImage" 
    data-schedule="1" 
    data-schedule-object="27" 
    data-schedule-object-module="222222"     
    id="cameraInput_2" 
    name="cameraInput_2"> 

nun auf klicken, um es ein Bild hochlädt und macht mehrere Einträge in die DB

JS-Code

$(document).on('change', '.uploadImage', function() { 
    var $inpt = $(this); 
    var $som = $inpt.attr('data-schedule-object-module'); 
    .... 
    console.log($som); 
    .... 
}); 

Nun, wenn ich Eingang 1 klicken, wird alles ist in Ordnung, aber wenn ich Eingang 2 (oder eine andere folgende) wähle, gibt console.log($som) immer mir 11111 das Attribut von der ersten. Wo liege ich falsch in meinem JS?

Side Hinweis

Ein anderer Ansatz wäre ONE Fileupload haben und auslösen, dass auf einem Selektor auf Klick, der alle benötigten Attribute hat, aber dass einige Umkodierung bedeuten würde, denke ich so, wie ich es haben derzeit muss irgendwie möglich sein?

+1

Dieser Code funktioniert gut: https://jsfiddle.net/jn1bhc30/ –

+0

Werke für mich in Chrome ... https://jsfiddle.net/Arg0n/vwda09L6/ – Arg0n

+0

hast du versucht $ (document) .on ('ändern', '.uploadImage', function (event) {console.log (event)}? –

Antwort

1
$("input[type=file]").change(function() { 
    var $inpt = $(this); 
    var $som = $inpt.attr('data-schedule-object-module'); 
    console.log($som); 
}); 

Siehe Fiddle

Verwandte Themen