вы можете использовать обратный вызов, который проверяет при выходе из поля, действительно ли значение, если значение недействительно, затем очищает его и отображает сообщение об ошибке:
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);
});
Я нашел этот сценарий на http://www.kunalbabre.com/jQueryLibrary/index.php :
$('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();
}
});
Он работает нормально, за исключением случаев, когда номер имеет ', 'на нем как' 100,000.00 '. Будет отображено всего «100». Символы ',' и остальные пропали.
Edit: Я думаю, что это на reg ex, но я ничего не знаю об этом. : (
Есть идеи? Помощь?
Где написано:
value = value.replace(/\./, "");
Вы должны поставить:
value = value.replace(/\.\,/, "");
Я думаю; -)
Я действительно закончил тем, что сделал это:
$(‘.InputClass’).keyup(function(){
if ($(this).val() != "")
$(this).val( $(this).val().replace(/[^0-9\.]/g, "") );
});
Итак, никаких раздражающих предупреждений или чего-либо еще; просто если вы введете что-либо, кроме числа или точки после числа, стирается. Просто, но эффективно.
Ура. Надежда кому-то помогает.