2017-03-04 5 views
2

Ich habe diesen Javascript-Code, der in Framework7 für eine Phonegap-Anwendung verwendet wird. Ich möchte, dass sich die Werte in der Tabelle ändern, sobald die Option ausgewählt ist. Dies funktioniert nicht, wenn ein Wert zum ersten Mal ausgewählt wird, aber beim zweiten Mal fehlerfrei funktioniert.Wählen Sie onchange-Ereignis funktioniert nicht beim ersten Mal

$('#mySelect931').on('change', function (e) { 

    var value = document.getElementById("mySelect931").value; 
     //myApp.alert(value); 

     if(value == 'M4'){ 
      var a = 'M4'; //value of d 
      var b = '14'; // value of b to 125 
      var c = '-'; //value of b to 200 
      var d = '-'; // value of b over 200 
      var e = '2.8'; // value of k 
      var f = '7.66'; // value of e 
      var g = '7'; // value of s 
     } 
}); 

Hier ist HTML-Code.

<select id="mySelect931" style='background-color: #e3e3e3; color: black;'> 
    <option value="0" selected="selected">Select Value</option> 
    <option value="M4">M4</option> 
    <option value="M5">M5</option> 
    <option value="M6">M6</option> 
</select> 

Antwort

0

Ich habe versucht, den Code ausgeführt wird und es funktioniert völlig in Ordnung, auch mit framework7 geladen. Zumindest wissen wir, dass Framework7 hier nicht das eigentliche Problem ist. Ich denke, dass Sie irgendwie einen anderen Ereignishörer auf dem Element #mySelect931 anfügen. Sie könnten versuchen, alle Ereignislistener auf Ihrem Element zu entfernen, indem Sie $('#mySelect931').off(); verwenden und herausfinden, ob das die Ursache ist.

Bitte überprüfen Sie die Schnipsel:

// code works even without the below line 
 
    $('#mySelect931').off(); // remove all event listeners for this element 
 
    $('#mySelect931').on('change', function (e) { 
 
     var value = document.getElementById("mySelect931").value; 
 
     alert('selected Value: ' + value); 
 
     if(value == 'M4'){ 
 
      var a = 'M4'; //value of d 
 
      var b = '14'; // value of b to 125 
 
      var c = '-'; //value of b to 200 
 
      var d = '-'; // value of b over 200 
 
      var e = '2.8'; // value of k 
 
      var f = '7.66'; // value of e 
 
      var g = '7'; // value of s 
 
     } 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.5.4/js/framework7.min.js"></script> 
 

 
<select id="mySelect931" style='background-color: #e3e3e3; color: black;'> 
 
    <option value="0" selected="selected">Select Value</option> 
 
    <option value="M4">M4</option> 
 
    <option value="M5">M5</option> 
 
    <option value="M6">M6</option> 
 
</select>

Ein weiterer schmutzig Hack, die change Ereignis könnte sich auszulösen. d. h. $('#mySelect931').trigger('change'); Es ist jedoch nicht der richtige Weg, damit umzugehen.

+1

danke mann; ich werde das überprüfen .. :) –

0

Wenn Sie den Wert sobald der Wert gesetzt werden soll ausgewählt ist, müssen Sie onclick verwenden. onchange funktioniert nur, wenn der neu ausgewählte Wert sich von dem tatsächlich ausgewählten Wert unterscheidet (Ihr Code funktioniert einwandfrei, wie ich es versucht habe).

+0

onclick funktioniert nicht; onchange ist die richtige Methode, aber es erfordert, dass ich die Option zweimal zum ersten Mal auswähle. Der Fehler ist hauptsächlich bei der Verwendung in Framework7 –

+0

Vielleicht http://stackoverflow.com/questions/37520765/select-onchange-doesnt-work. Ich kann nicht mehr helfen. – RompePC

+0

danke aber das funktioniert auch nicht .. :( –

0

VERSUCH MIT UNTEN CODE

HTML 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script> 
<select id="mySelect931" style='background-color: #e3e3e3; color: black;'> 
    <option value="0" selected="selected">Select Value</option> 
    <option value="M4">M4</option> 
    <option value="M5">M5</option> 
    <option value="M6">M6</option> 
</select> 

JQUERY 
jQuery(document).ready(function(){ 
    jQuery('#mySelect931').change(function(){ 
     alert(jQuery(this).val()); 
    }); 
}); 
Verwandte Themen