Πώς να ανιχνεύσει την αλλαγή σε ένα κείμενο εισόδου ασφαλείας στην jQuery

ψήφοι
0

Έχω δύο κειμένων πλαίσιο κειμένου εισόδου και θέλω να κάνω το σύνολο των ό, τι δεν εισάγει ο χρήστης. Παρακάτω είναι ο κωδικός μου:

$(document).ready(function(){
    var total = 0;
    $(.test).on(input, function(){
        // Print entered value in a div box
        total += parseInt($(this).val());
        $(#result).text(	total);
    });
});
<script src=https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js></script>
<p><input type=text class=test placeholder=Type something... id=myInput></p>
    <p><input type=text class=test placeholder=Type something... id=myInput></p>
    <div id=result></div>

Όταν εισόδου 10πρώτη, τότε χρειάζεται 11, στη συνέχεια, αν μπαίνω 100 τότε παίρνει 111, εγώ δεν είμαι πάρει γιατί αυτό συμβαίνει. Σε περίπτωση που κάνω λάθος, οδηγός μου;

Δημοσιεύθηκε 24/10/2019 στις 12:52
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
2

Από τον κωδικό σας όταν εισάγετε το πρώτο ψηφίο είναι ήδη υπολογιστεί στο συνολικό γιατί total += parseInt($(this).val()). Για παράδειγμα, εάν το πρώτο ψηφίο σας είναι 1 τότε σε αυτό συνολικός χρόνος είναι ενημέρωση όπως total = 1, στο δεύτερο πάτημα, για παράδειγμα, να λάβει 0, τότε η συνολική συμβολή σας γίνεται 10. να υπολογίζει στην τρέχουσα συνολική αξία όπως total = total + 10. γι 'αυτό και παίρνετε 11 ως απάντηση

Δοκιμάστε σαν αυτό.

$(document).ready(function(){
    var total = 0;
    $(".test").on("input", function(){
        // Print entered value in a div box
        if ($("#myInput1").val() && $("#myInput2").val()) {
           total = parseInt(parseInt($("#myInput1").val()) + parseInt($("#myInput2").val()));
           $("#result").text(total);
        }
    });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p><input type="text" class="test" placeholder="Type something..." id="myInput1"></p>
<p><input type="text" class="test" placeholder="Type something..." id="myInput2"></p>
<div id="result"></div>

Απαντήθηκε 24/10/2019 στις 12:58
πηγή χρήστη

ψήφοι
0

Ο λόγος που δεν σας έδειξε το αποτέλεσμα που θέλετε, είναι γιατί ο υπολογισμός είναι λάθος. Μπορείτε τώρα να προσθέσετε τον αριθμό του συνόλου, κάθε φορά που ένας αλλαγές πεδίο εισαγωγής. Έτσι, αν πληκτρολογήσετε 123, παίρνει 0 + 1, τότε 1 + 12, τότε 13 + 123, έτσι θα έχετε 136 ως αποτέλεσμα.

Έγραψα μια πιθανή λύση για την ερώτησή σας. Ο κωδικός που εμφανίζεται στην κάτω βιολί.

Θα μπορούσατε να προσθέσετε μια λειτουργία όπου μπορείτε να υπολογίσετε το σύνολο όλων των πεδίων εισόδου (μπορεί να είναι πάνω από 2, είναι γενική).

function calculateTotal(){
  var total = 0;
    $( ".test" ).each(function( index ) {
      var value = $(this).val();
      if(value == ""){
        return;
      }
      total += parseInt(value);

    });
  $("#result").text(    total);
}

Και σχετικά με την αλλαγή των πεδίων εισόδου σας, μπορείτε απλά να εκτελέσει τα καθήκοντα αυτά.

$(document).ready(function(){
    var total = 0;
    $(".test").on("input", function(){
        calculateTotal();
    });
});

Το παράδειγμά σας είναι σε αυτό το βιολί: https://jsfiddle.net/xL6hgder/2/

Απαντήθηκε 24/10/2019 στις 13:01
πηγή χρήστη

ψήφοι
0

Χρησιμοποιήστε την εκδήλωση αλλαγή αντί να την εκδήλωση εισόδου. Θα ενεργοποιηθεί μόνο όταν η τιμή είναι «αποφασισμένη», αντί για κάθε πάτημα πλήκτρου. Δείτε MDN για λεπτομέρειες.

Απαντήθηκε 24/10/2019 στις 12:59
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more