2016-11-11 2 views
0

Je crée une application Web qui nécessite que les utilisateurs saisissent un nombre avec une décimale. Je limiterai les utilisateurs d'entrer d'autres caractères que les chiffres de l'aide de ce code javascriptAutoriser la zone de saisie html pour entrer uniquement un nombre entier et exactement décimal .5

html

<input type="number" name='days' class="w3-input w3-padding-tiny" id="cntday" onkeypress="return isNumberKey(event)" placeholder="Enter days"/> 

javascript

function isNumberKey(evt) { 
      var charCode = (evt.which) ? evt.which : evt.keyCode; 
      if (charCode != 46 && charCode > 31 && 
      (charCode < 48 || charCode > 57)) 
      return false; 
      return true; 
     } 

mais cette fonction empêche uniquement les utilisateurs d'entrer des caractères autres que des chiffres. J'ai besoin pour empêcher les utilisateurs d'entrer dans plus d'une décimales ainsi que décimal entrée doit être 0,5

c'est comme ça

  • si utilisateur entre 5,55 il devrait remplacer par 5,5 ou empêcher l'utilisateur d'entrée supplémentaire décimale

  • et si l'utilisateur 5.2 ou entrer une décimale il devrait être remplacer par 5,5 dans les autres utilisateurs mots devraient ne pouvoir entrer le numéro avec décimales .5

Comment puis-je y parvenir avec ma fonction onkeypress actuelle?

Ce n'est PAS un doublon de l'autre question. Arrêtez signaler cette

Répondre

1

Vous pouvez le faire par le nombre divisé en deux parties:

Partie 1 pour nombre naturel.

Partie 2 pour le nombre décimal.

alors vous pouvez remplacer un nombre décimal entré à .5

Quelque chose comme ceci:

$('input').keyup(function() { 
 
var value = this.value; 
 
var pos = value.indexOf("."); 
 
var result; 
 
if (pos !== -1) { 
 
    var part1 = value.substr(0, pos); 
 
    var part2 = value.substr(pos); 
 
    result = part1 + part2.replace(part2,".5") 
 
    $('input').val(result); 
 
} 
 
}); 
 

 
function isNumberKey(evt) { 
 
    var charCode = (evt.which) ? evt.which : evt.keyCode; 
 
    if (charCode != 46 && charCode > 31 && 
 
     (charCode < 48 || charCode > 57)) 
 
     return false; 
 
     return true; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="number" name='days' class="w3-input w3-padding-tiny" id="cntday" onkeypress="return isNumberKey(event)" placeholder="Enter days"/>

1

Utilisez cette

$('#cntday').keyup(function() { 
    if(this.value %1 != 0.5){ 
     this.value = this.value - this.value%1 + 0.5; 
    } 
}); 

La condition vérifie si un nombre décimal a été entré ou non et dès qu'un nombre décimal est entré et un nombre est entré, il le change en .5 Il répond aux deux exigences que vous avez mentionnées. Cochez ici https://jsfiddle.net/xn0koawx/