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/