2016-07-12 13 views
1

Ich habe ein Formular, in dem ich Kosten für ein Produkt berechnen. Es hängt sowohl von einem eingegebenen Wert als auch von einer Auswahl ab.Kombination von Änderung und Schlüssel

Gibt es eine Möglichkeit, die Ereignisse und keyup in einem Reinigersegment zu kombinieren?

Mein Code ist wie folgt:

https://jsfiddle.net/qrv57qtu/

$('#input').keyup(function(){ 
    var x = $('#input').val(); 
    var y = $('#select').val(); 
    if (y == '5') { 
     var z = 5; 
    } 
    else if (y == '10') { 
     var z = 10; 
    } 
    var z = x * y; 
    $('#total').html(z); 
}); 

$('#select').change(function(){ 
    var x = $(this).val(); 
    var y = $('#input').val(); 
    if (x == '5') { 
     var z = 5; 
    } 
    else if (x == '10') { 
     var z = 10; 
    } 
    var a = y * z; 
    $('#total').html(a); 
}); 

Danke.

Antwort

3

Sie können einen einzelnen durch Kommas begrenzten Selektor verwenden, um beide Elemente zu erhalten. Dann, wenn Sie die on() Methode verwenden, können Sie eine durch Leerzeichen getrennte Zeichenfolge stellen die Ereignisnamen enthält, die Sie binden möchten, wie folgt aus:

$('#input, #select').on('keyup change', function() { 
    var x = $('#input').val(); 
    var y = $('#select').val(); 

    if (y == '5') { 
     var z = 5; 
    } 
    else if (y == '10') { 
     var z = 10; 
    } 

    var z = x * y; 
    $('#total').html(z); 
}); 

Beachten Sie auch, dass die if Zustand in Ihrer Logik völlig überflüssig ist, wie Sie überschreiben der Wert von z am Ende ist sowieso

+0

fehlt Ihnen das '# select'. – BenG

+0

@BenG danke :) –

+0

Das ist großartig - danke! :) Die if-Anweisung ist in meiner tatsächlichen Verwendung notwendig, weil sie einen Wert aus einer Zeichenkette festlegt - dies wurde ein wenig vereinfacht und etwas zu hastig gemacht. – danik

0

Hier ist der Arbeitscode:

$(document).on("keyup change", "#input, #select", function(){ 
var x = $('#select').val(); 
    var y = $('#input').val(); 

    if (x == '5') { 
       var z = 5; 
    } 
    else if (x == '10') { 
       var z = 10; 
    } 
    var a = y * z; 
    $('#total').html(a);}) 

https://jsfiddle.net/itsrikin/gaL237qg/