2009-11-09 11 views
5

ich diesen Code in jquery habe nicht numerische Zeichen zu verhindernValidate numerisches Textfeld in jquery

$("#NumericField").numeric(); 

nun in das Textfeld eingegeben wird, auf dem Textfeld i Eingang nicht-numerische Zeichen kann nicht. Das ist ok. Das Problem besteht hier, wenn der Benutzer das Textfeld mit nicht numerischen Zeichen einfügen wird.

Gibt es eine Möglichkeit/Methode, das Einfügen zu deaktivieren, wenn der Wert nicht numerisch ist? Oder gibt es einen anderen Ansatz, um diese Situation zu behandeln, die Sie teilen können?

+0

Sie sollten besser eine Klasse anstelle einer ID verwenden, um alle numerischen Felder zu identifizieren. Jetzt können Sie nur ein einzelnes numerisches Feld auf einer Seite haben. –

+0

Gute Idee. Ich werde meinen Code ändern. –

Antwort

5

können Sie Rückruf verwenden, das Feld zu verlassen prüft, ob Wert gültig ist, wenn der Wert nicht gültig ist dann klar, und zeigt Fehlermeldung:

var decimal_char = ','; 
function isvalidnumber(){ 
    var val=$(this).val(); 
    //This regex is from the jquery.numeric plugin itself 
    var re=new RegExp("^\\d+$|\\d*" + decimal_char + "\\d+"); 
    if(!re.exec(val)){ 
     alert("Invalid number"); 
     $(this).val(""); 
    }  
} 
$(document).ready(function(){ 
    $("#txtN").numeric(decimal_char,isvalidnumber); 
}); 
+0

Vielleicht könnte anstelle einer Fehlermeldung die Eingabe nur gefiltert werden, um die ungültigen Zeichen zu entfernen? Es könnte für den Benutzer angenehmer sein, wenn er zum Beispiel eine Nummer einfügt, die am Ende ein Leerzeichen enthält. – Kaivosukeltaja

+0

Ich habe es geändert. der erste funktionierte nicht und nicht mit dezimal char – TheVillageIdiot

+0

Ich werde dieses eine versuchen ... –

0

ich dieses Skript auf http://www.kunalbabre.com/jQueryLibrary/index.php gefunden:

$('input[numeric]').keyup(function() {  
    var d = $(this).attr('numeric'); 

    var value = $(this).val(); 
    var orignalValue = value; 
    value = value.replace(/[0-9]*/g, ""); 

    var msg = "Only Integer Values allowed."; 

    if (d == 'decimal') { 
     value = value.replace(/\./, ""); 
     msg = "Only Numeric Values allowed."; 
    } 

    if (value != '') { 
     orignalValue = orignalValue.replace(/([^0-9].*)/g, "") 
     $(this).val(orignalValue); 
     //alert(msg); 
     $(this).after('<span style="margin-left:5px;color:red;position:absolute;">' + msg + '</span>'); 
    } else { 
     $(this).next('span').remove(); 
    } 
}); 

Es funktioniert gut, außer wenn die Zahl "," darauf wie "100.000,00" hat. Es wird nur '100' wiedergegeben. Das "," und der Rest sind weg.

Edit: Ich denke, das ist auf der reg ex aber im ahnungslosen darüber. ? Hilfe :(

Jede Idee

1

Wo es heißt:

value = value.replace(/\./, ""); 

Sie sollten setzen:

value = value.replace(/\.\,/, ""); 

Ich denke ;-)

ich wirklich am Ende dabei:

$(‘.InputClass’).keyup(function(){ 
    if ($(this).val() != "") 
    $(this).val($(this).val().replace(/[^0-9\.]/g, "")); 
}); 

Also keine annoying Warnungen noch irgendetwas; nur wenn Sie etwas anderes als eine Zahl oder einen Punkt nach einer Zahl eingeben, wird es ausgeklappt. Einfach aber effektiv.

Prost. Hoffnung hilft jemandem.