我试图找到一种方法来验证在按键的文本输入,我想只允许在我的文字输入包括小数号码。
我正在使用jQuery.keydown的方法,并检查什么,关键是和使用event.preventDefault()如果该键允许列表中没有。 但是从那以后我读过键不是整个浏览器一致,我也担心不同的操作系统。
我已经遇到了这个问题,但我不精通正则表达式并不能肯定这是否会适合我的需要: jQuery的-按键上的字符验证?
有了这个方法,它预计00.00将停止,因为在关键了正则表达式进行检查时,00时键入的用户正则表达式。
谢谢
你不应该依赖于关键事件,因为这将意味着如果用户不确认,将不能右击- >与无效字符粘贴 。
你应该不是做的是使用类似zurb的textchanged
事件-这将准确,无论触发输入模式(键,粘贴,拖放,等等)
http://www.zurb.com/playground/jquery-text-change-custom-event
里面的textchanged
处理程序,你可以在适当的正则表达式来处理小数。
如果你想限制输入(与验证),你可以用关键事件工作。 是这样的:
<input type="text" class="numbersOnly" value="" />
和:
jQuery('.numbersOnly').keyup(function () {
this.value = this.value.replace(/[^0-9\.]/g,'');
});
或者 ,在用户已经“左”领域,与上改变事件,这样,用户仍然可以通过使用箭头键文本浏览,我们可以更新此。
jQuery('.numbersOnly').on('change', function () {
this.value = this.value.replace(/[^0-9\.]/g,'');
});
这立即让用户知道,在验证阶段,他们不能进入字母字符等,而不是以后。
您仍需要验证,因为输入可能会被切割并用鼠标或可能由形式autocompleter可能不会触发关键事件粘贴填写。
小提琴: http://jsfiddle.net/shannonhochkins/eu7P9/
我已经使用e.which验证十进制数
$(document).ready(function () {
var isEnable=true;
$(".only-number-period").live('keydown', function (e) {
//isEnable = (e.which != 110) ? false : true;
if( ((e.which == 9) || (e.which == 46) || (e.which == 8) || (e.which == 110) || (e.which >= 48 && e.which <= 57) || (e.which >= 96 && e.which <= 105))){
if(isEnable ==false && e.which ==110){return false;}
}else{
return false
}
if (isEnable == true) {
isEnable=(e.which ==110)?false:true;
}
});
});
链接:: HTTP://jsfiddle.net/rTr2w/
用香的回答,我提供了以下简单的JS代码:
jQuery('.numbersOnly').keyup(function () {
if(($(this).val().split(".")[0]).indexOf("00")>-1){
$(this).val($(this).val().replace("00","0"));
} else {
$(this).val($(this).val().replace(/[^0-9\.]/g,''));
}
});
看到这个动作: http://jsfiddle.net/SnakeEyes/eu7P9/2/
更新为避免多次.
符号,使用下面的代码:
jQuery('.numbersOnly').keyup(function (e) {
if(($(this).val().split(".")[0]).indexOf("00")>-1){
$(this).val($(this).val().replace("00","0"));
} else {
$(this).val($(this).val().replace(/[^0-9\.]/g,''));
}
if($(this).val().split(".")[2] != null || ($(this).val().split(".")[2]).length ){
$(this).val($(this).val().substring(0, $(this).val().lastIndexOf(".")));
}
});
例如: http://jsfiddle.net/SnakeEyes/eu7P9/3/