2016-04-29 5 views
1

Ich habe eine Auswahlbox wie so:JS: OnChange-Ereignis beim Start aktiviert

<select id="param2" name="param2" onchange="reload();"> 
<option value="sth">sth</option> 
<option value="sth2">sth2</option> 
</select> 

Die „onchange“ Ereignis beim Start aktiviert wird, wenn ich die Datei laden - aber ich möchte das Ereignis nur dann aktiviert werden, wenn Mein Auswahlbox-Element hat sich geändert. Wie kann ich das tun, oder habe ich etwas falsch gemacht ...? Die "Reload" -Funktion befindet sich am Anfang der Datei, wenn sie helfen kann. Danke im Voraus.

EDIT: Ich verwende Firefox Version 45 & JQuery 1.7. Hier ist der JS-Code, nur Werte für jetzt zeigt:

<script> 
function reload() { 
    var v1 = document.getElementById('param1').value;var v2 = document.getElementById('param2').value; 
    alert(v1 + " "+ v2);} 
</script> 

EDIT2: Ich habe etwas gefunden. Irgendwie gibt es einen Konflikt mit dem folgenden Code. Ich werde es zuerst selbst schaffen.

<script> 
    $(function() { 
    $('select#param1').listbox(); 
    $('select#param2').listbox(); 
    }); 
</script> 
+0

'onchange' wird beim erneuten Laden der Seite nicht ausgelöst. Wenn Sie dieses Verhalten sehen, passiert noch etwas anderes. Welchen Browser benutzen Sie? Welche Version? Wie sieht dein Javascript aus? Verwenden Sie jQuery? Brauchen Sie mehr zu sehen. – mariocatch

+0

@mariocatch Vielen Dank für Ihre Antwort. Weitere Details wurden oben hinzugefügt. –

+0

Können Sie [diesen Plunker] testen (http://plnkr.co/edit/kR9RRXeWR3o9T5yPyDp4?p=preview) und versuchen, das Problem, das Sie dort sehen, zu reproduzieren? Verwenden Sie Ihren gleichen Code, und verwenden Sie die gleiche Version von jQuery (Ich legte 1,7 in diesem Plunker. – mariocatch

Antwort

0

Nicht sicher, warum onchange in Ihrer Situation ausgelöst wird, sollte es nicht standardmäßig ausgelöst werden. Sie können es einfach beheben, indem Sie binden onchange Ereignis nach der Seite

<script src="path to your jquery"/> 
<script> 
    $(function(){ 
     // will be run after html document has been loaded. 
     $('#param2').on('change', function(){ 
      reload(); 
     }); 
    }); 
<script> 

hinzugefügt, nachdem Frage aktualisiert,

<script> 
$(function() { 
    $('select#param1').listbox(); 
    $('select#param2').listbox(); 
    $('#param2').on('change', function(){ 
     reload(); 
    }); 
}); 
</script> 
+0

Vielen Dank für Ihre Antwort. Ich verstehe die Idee der Bindung das Ereignis, aber ich verstehe nicht, wie kann ich diesen Code und wo ich muss es sagen. –

0

den folgenden Code geladen zwischen Ihren <script></script> Tags

$(document).ready(function() { 

    $('#param2').on('change', function(){ 
     reload(); 
     }); 
}); 

auch ändern Ihr HTML, um das onchange Formular dort zu entfernen

<select id="param2" name="param2"> 
<option value="sth">sth</option> 
<option value="sth2">sth2</option> 
</select>