Comment autoriser la zone de texte numérique (0-9) & valeur décimale avec jQuery?

J’ai écrit quelques lignes pour n’accepter que des caractères numériques, mais mon script ne fonctionne pas. quand je tape n’importe quel alphabet alors il est inséré dans la zone de texte que je ne veux pas. Je veux que la zone de texte accepte uniquement les valeurs numériques et “.” point pour décimal. voici mon script. Dites-moi simplement ce qui ne va pas là-bas.

$().ready(function () { $("input[id*='txtQty']").keyup(function (event) { var flag = false; if (event.shiftKey == true) { event.preventDefault(); } // Allow Only: keyboard 0-9, numpad 0-9, backspace, tab, left arrow, right arrow, delete if ((event.keyCode >= 48 && event.keyCode = 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46) { // Allow normal operation flag = true; } else { // Prevent the rest event.preventDefault(); } if (flag) { } }); }); 

si possible, donnez-moi un script qui activera ma zone de texte uniquement en chiffres et décimales. Merci

voici mon script complet. le problème est qu’il prend point “.” que je ne veux pas.

  $().ready(function () { $("input[id*='txtQty']").keydown(function (event) { var flag = true; if (event.shiftKey == true) { event.preventDefault(); flag = false; } if ((event.keyCode >= 48 && event.keyCode = 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46 || event.keyCode == 190) { } else { event.preventDefault(); flag = false; } if (flag) { if (jQuery.trim(this.value) != "") { if (IsNumeric(jQuery.trim(this.value)) == true) { var Symbol = $("span[id*='lblPrice']").text().trim().substring(1, 0); var oldprice = $("input[id*='txtHiddenPrice']").val(); var newprice = Math.round((oldprice * this.value), 2); $("span[id*='lblPrice']").text(Symbol + newprice); UpdateCart($(this).closest('tr').find("input[id*='txtItemId']").val(), $(this).closest('tr').find("input[id*='txtProductId']").val(), this.value); } } } }); }); 

alors dites-moi ce que je dois changer dans mon code car il ne devrait pas prendre de valeur décimale. une autre chose importante que j’attache l’événement keydown () avec un système de joker, car ma page peut avoir plusieurs textbox dont le nom se termine par txtQty .

  $("input[id*='txtQty']").keyup(function (event) { 

alors aidez-moi s’il vous plaît. Merci

Vous ne pouvez pas utiliser e.preventDefault() pour l’événement keyup . Changez-le en keydown .

 $(function () { $("input[id*='txtQty']").keydown(function (event) { if (event.shiftKey == true) { event.preventDefault(); } if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46 || event.keyCode == 190) { } else { event.preventDefault(); } if($(this).val().indexOf('.') !== -1 && event.keyCode == 190) event.preventDefault(); //if a decimal has been added, disable the "."-button }); });​ 

Violon

Vous pouvez supprimer le caractère non numérique lorsque keyup.

 $("#txtQty").keyup(function() { var $this = $(this); $this.val($this.val().replace(/[^\d.]/g, '')); });​ 

La démo

Créez une classe de nombres uniquement et ajoutez-la à votre élément

Cela acceptera:
– backspace
– effacer
– Nombres
– une décimale

 $(".numbers-only").keypress(function (e) { if(e.which == 46){ if($(this).val().indexOf('.') != -1) { return false; } } if (e.which != 8 && e.which != 0 && e.which != 46 && (e.which < 48 || e.which > 57)) { return false; } }); 

Cette solution ne s’applique que si vous n’avez pas inclus de nombre décimal ou seulement un nombre compris entre 0 et 9

 $("#number").keypress(function( event ){ var key = event.which; if( ! ( key >= 48 && key <= 57 ) ) event.preventDefault(); }); 

vous pouvez voir l'exemple en cours ici http://jsfiddle.net/yghD3/6/

Ma solution accepte Copier / Coller et enregistre la position du curseur. Utilisé pour le coût des produits, n’autorise que les valeurs décimales positives. Peut être refactor très facile à autoriser les chiffres négatifs ou entiers.

 $(function () { $("input.only-positive-decimal").bind("change keyup input", function () { var position = this.selectionStart - 1; //remove all but number and . var fixed = this.value.replace(/[^0-9\.]/g, ''); if (fixed.charAt(0) === '.') //can't start with . fixed = fixed.slice(1); var pos = fixed.indexOf(".") + 1; if (pos >= 0) //avoid more than one . fixed = fixed.substr(0, pos) + fixed.slice(pos).replace('.', ''); if (this.value !== fixed) { this.value = fixed; this.selectionStart = position; this.selectionEnd = position; } }); }); 

Mettez sur la page html:

  

Vous pouvez essayer http://www.texotela.co.uk/code/jquery/numeric/

Ce fil mentionne le même plugin avec un tas d’autres choses que vous pourriez essayer.

 //This will let you enter numbers only and the decimal point ones. $(window).load(function(){ $('.number').keypress(function(event) { if(event.which < 46 || event.which >= 58 || event.which == 47) { event.preventDefault(); } if(event.which == 46 && $(this).val().indexOf('.') != -1) { this.value = '' ; } }); }); 

Il permettra seulement 1 à 9 chiffres et décimales . Si d’autres caractères sont insérés, ces chiffres seront remplacés.

  

Vérifiez dans le violon .

 $('.number').keypress(function(event) { if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) { event.preventDefault(); } }); 

Essayez ce code

 $('#from-amount1').keypress(function(event) { //alert(event.which == 8); //alert(event.which); if((event.which > 47 && event.which < 58) || (event.which == 46 || event.which == 8)) { // your condition } else { event.preventDefault(); } }).on('paste', function(event) { event.preventDefault(); }); 
   
 element.keypress(function (e) { var charCode = (e.which) ? e.which : event.keyCode; var dec=0; dec = (this.value.match(/[.]/g) || [] ).length; if(dec===1 && e.key=='.') return false; if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode!=46) return false; });