如何使HTML输入标签只接受数字?

时间:2014-01-07 05:04:44

标签: html meteor

如何使HTML输入标记仅接受数字?

  • 我需要确保input字段仅将数字作为输入 值。

  • 我希望用户无法输入其他任何字符 比数字。

  • 用户手动输入数字而不是数字滚动条。

我正在使用Meteor Js。代码如下所示。

App.html

<head>
  <title App</title>
</head>

<body>
  {{> main}}

</body>

<template name="main">
     <h1>Welcome to TICTACTOE App</h1>
    <p><b>Layout Number :</b> <input type="text" id="no"></p>
</template>



App.js


if (Meteor.isClient)
 {


  Template.main.events
  ({
    'keydown input#no' : function ()
    {
      // template data, if any, is available in 'this'
      if (event.which == 13) 
        { // 13 is the enter key event
          console.log("You pressed  enter key");
        }
    }
  });
}

if (Meteor.isServer) 
{
  Meteor.startup(function () 
  {
    // code to run on server at startup
  });
}

7 个答案:

答案 0 :(得分:2)

这应该对你有帮助。

<input type="number" />

:)

或者将jQuery与密钥代码一起使用的最佳方式:

jQuery("#yourInputId").keydown(function(event) {
            // Allow: backspace, delete, tab, escape, enter and .
            if ( jQuery.inArray(event.keyCode,[46,8,9,27,13,190]) !== -1 ||
                 // Allow: Ctrl+A
                (event.keyCode == 65 && event.ctrlKey === true) || 
                 // Allow: home, end, left, right
                (event.keyCode >= 35 && event.keyCode <= 39)) {
                     // let it happen, don't do anything
                     return;
            }
            else {
                // Ensure that it is a number and stop the keypress
                if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
                    event.preventDefault(); 
                }   
            }
        });

请参阅DEMO.

答案 1 :(得分:1)

如果您使用HTML5,那么

<input type="number" />

否则

<script>
     function isNumberKey(evt){
            var charCode = (evt.which) ? evt.which : event.keyCode
            return !(charCode > 31 && (charCode < 48 || charCode > 57));
        }
</script>

<input type="text" onkeypress="return isNumberKey(event);">

答案 2 :(得分:1)

使用HTML5很容易:

<input type="number" />

如果不支持HTML5,请使用jQuery事件:Live Demo

<label for="number">Number: </label>
<input type="text" name="number" id="number" />

<script>
    $('#number').keydown(function(){
        $(this).val($(this).val().replace(/[^\d]/,''));
        $(this).keyup(function(){
            $(this).val($(this).val().replace(/[^\d]/,''));
        });
    });
</script>

答案 3 :(得分:1)

function isNumberKey(evt){
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
    return true;
}

<input type="someid" name="number" onkeypress="return isNumberKey(event)"/>

答案 4 :(得分:0)

仅适用于HTML 5。 如果你想让它适用于旧浏览器,你必须得到javascript的帮助。

答案 5 :(得分:0)

试试这个

<input name="amount" type="text" value="Only number in here"/> 

<script>
    $('input[name=amount]').keyup(function(){
        $(this).val($(this).val().replace(/[^\d]/,''));
    });
</script>

您还可以在html5中使用pattern属性:

<input type="text" name="name" pattern="[0-9]" title="Title" /> 

答案 6 :(得分:0)

在您需要过滤的任何输入上,您只需要输入 onkeydown =“return onlynumbers(event);” 码。 这是一个通用代码,可以在旧HTML上运行,不需要jQuery。 :)

<script type="text/javascript"> 
function onlynumbers(e) {
        if (e.shiftKey === true ) {
            if (e.which == 9) {
                return true;
            }
            return false;
        }
        if (e.which > 57) {
            return false;
        }
        if (e.which==32) {
            return false;
        }
        return true;
    }
</script>
<input type="text" onkeydown="return onlynumbers(event);">