2016-09-22 2 views
1

Ich versuche, meine Eingabe nur akzeptieren Zahlen und die ".", Es funktioniert gut, aber es nicht für Nummernblock Nummerntasten zulassen. Ich kann nicht scheinen, die genaue Antwort online zu finden.Html und Javascript Eingabe Validierung

HTML

<input type="text" id="ItemTotal#i#" name="ItemTotal#i#" value="#qPriceAct#" onkeypress="return isNumeric(event)" onkeydown="return keyispressed(event);"> 

JavaScript

//prevent , and $ from being input 
function keyispressed(e){ 
    var charval= String.fromCharCode(e.keyCode); 
    if(isNaN(charval) && (e.which != 8) && (e.which != 190)){ 
     return false; 
    } 
    return true; 
} 


//is input numeric 
function isNumeric (evt) { 
    var theEvent = evt || window.event; 
    var key = theEvent.keyCode || theEvent.which; 
    key = String.fromCharCode (key); 
    var regex = /[0-9]|\./; 
    if (!regex.test(key)) { 
    theEvent.returnValue = false; 
    if(theEvent.preventDefault) theEvent.preventDefault(); 
    } 
} 

Danke für die Hilfe!

+0

Haben Sie 'pattern' Attribut versucht? Es ist eine Regexp, die Sie in HTML einfügen und die Gültigkeit selbst überprüft. – Azamantes

+0

Sie erwähnen, dass es in Ihrer Web-App verwendet wird, ist die Klasse 'numbersOnly' auf jedem Eingang, der nur Zahlen erlauben sollte? – depperm

+0

Ist "Num-lock" eingeschaltet? ... nur für den Fall – SparK

Antwort

1

Der beste Weg, glaube ich, wäre eine Klasse zu allen Eingängen hinzuzufügen, die nur Zahlen erlauben. Dann können Sie alle Eingaben einschränken, die nicht mit dem Muster oder einer Zahl/Dezimalzahl übereinstimmen.

function numberVerfication(value) { 
 
    var pattern=/^[0-9]*(\.)?[0-9]*$/; 
 
    if (value.match(pattern) != null){ 
 
    return value 
 
    } 
 
    else { 
 
    var p=/[0-9]*(\.)?[0-9]*/; 
 
    return value.match(p)[0]; 
 
    } 
 

 
} 
 
$('.numbersOnly').keyup(function(e) { 
 
    e.target.value = numberVerfication(e.target.value); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class='numbersOnly' type="text" id="ItemTotal#i#" name="ItemTotal#i#" value="#qPriceAct#">

0

Einfach mit REGEXP

HTML

<input type="text" class='numbersOnly' id="ItemTotali" name="ItemTotal#i" value="qPriceAct"> 

JQUERY

$('.numbersOnly').keyup(function (e) { 
    this.value = this.value.replace(/[^0-9\.]/g, ''); 
}); 

JAVA SCRIPT

function numValidate(that){ 
    that.value = that.value.replace(/[^0-9\.]/g, ''); 
} 

<input type="text" onkeypress='numValidate(this)' onkeyup='numValidate(this)' class='numbersOnly' id="ItemTotali" name="ItemTotal#i" value="qPriceAct"/> 

Demo

+0

ja das Problem hier ist, dass es in meiner gesamten Web-App verwendet. es muss innerhalb der Funktion und nicht Klasse oder ID spezifische sein – Charles

+1

Ich habe diese Antwort für Dezimalwerte aktualisiert. – mmushtaq

+0

@Charles Überprüfen Sie es jetzt. –

-1

Hinzufügen type = "number" und Schritt = "beliebig" an den Eingang:

<input id="ItemTotal#i#" value="" type="number" step="any" />

+0

Dies funktioniert nur für HTML5 – cesargroening

+0

yeah das wird nicht für eine 3-Tier-Validierung arbeiten – Charles

0

function numberVerfication(value){ 
 
     return value.replace(/[^0-9.\-+]/g, ''); 
 
} 
 
$('.numbersOnly').keyup(function(e){ 
 
     e.target.value=numberVerfication(e.target.value); 
 
}); 
 
    

Verwandte Themen