Javascript / Jqueryvalidationkeypress / keydown上的十进制输入

我正试图找到一种方法来validation按键上的文本输入,我想只在我的文本输入中包含数字,包括小数。

我正在采用jQuery.keydown的方法,检查密钥是什么,如果密钥不在允许列表中,则使用event.preventDefault()。 但从那时起我就读到各个浏览器的密钥不一致,我也担心不同的操作系统。

我遇到过这个问题,但是我不能说正则表达式,也不确定这是否符合我的需要: jquery – validation按键上的字符?

使用该方法,当键入00时,期望00.00的正则表达式将停止用户,因为在加密时检查正则表达式。

谢谢

您不应该依赖关键事件,因为如果用户右键单击 – >粘贴无效字符,则validation将失败。

您应该做的是使用类似zurb的textchanged事件 – 无论输入模式如何(键,粘贴,拖放,等等)都会准确触发

http://www.zurb.com/playground/jquery-text-change-custom-event

textchanged处理程序中,您可以放入适当的正则表达式来处理小数。

如果要限制输入(而不是validation),则可以使用关键事件。 像这样的东西:

  

和:

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

或者 ,我们可以在用户“离开”字段后使用on change事件更新此内容,这样用户仍然可以使用箭头键浏览文本。

 jQuery('.numbersOnly').on('change', function () { this.value = this.value.replace(/[^0-9\.]/g,''); }); 

这立即让用户知道他们不能输入字母字符等,而不是稍后在validation阶段。

您仍然需要validation,因为可能通过使用鼠标剪切和粘贴来填充输入,或者可能通过可能不会触发键事件的表单自动填充器来填充输入。

小提琴: http : //jsfiddle.net/shannonhochkins/eu7P9/

我用e.which来validation十进制数

 $(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/

使用Shannon的答案,我提供了以下简单的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/