在JQuery代码中允许十进制

时间:2014-05-17 12:17:13

标签: jquery

我有以下脚本:

<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>

 $(function () {
    $("#<%= txtAmount.ClientID %>").keydown(function (e) {
        if (e.shiftKey || e.ctrlKey || e.altKey) {
            e.preventDefault();
        } else {
            var key = e.keyCode;
            if (!((key == 8) || (key == 46) || (key >= 35 && key <= 40) || (key >= 48 && key <= 57) || (key >= 96 && key <= 105))) {
                e.preventDefault();
            }
        }
    });

我要做的是允许十进制字符(。)但是阻止除数字之外的所有其他字符,因此唯一允许的字符是数字和小数。

我读了JQuery的键码,其中110,190是十进制字符,但上面的代码允许这些值,我在javascript上读取了46作为十进制键码,但从上面的代码中删除它也没有用。有人可以建议吗?

2 个答案:

答案 0 :(得分:1)

似乎应该有一种更简单的方法来做到这一点

$("#<%= txtAmount.ClientID %>").keypress(function (e) {
    if (!String.fromCharCode(e.which).match(/[\d.]/)) e.preventDefault();
});

FIDDLE

答案 1 :(得分:0)

这是一个块:

$(document).ready(function () {
  //called when key is pressed in textbox
  $("#quantity").keypress(function (e) {
     //if the letter is not digit then display error and don't type anything
     if (e.which != 8 && e.which != 0 && e.which.indexOf('.') != -1 && (e.which < 48 || e.which > 57)) {
        //display error message
        $("#errmsg").html("Digits Only").show().fadeOut("slow");
               return false;
    }
   });


});

Fiddle DEMO

代码:

$(function () {
    $("#<%= txtAmount.ClientID %>").keydown(function (e) {
         //if the letter is not digit then display error and don't type anything
         if (e.which != 8 && e.which != 0  && e.which.indexOf('.') != -1 && (e.which < 48 || e.which > 57)) {
            //display error message
            $("#errmsg").html("Digits Only").show().fadeOut("slow");
                   return false;
        }
    });

   });