验证输入是否仅包含数值 - Javascript

时间:2015-12-11 11:03:49

标签: javascript jquery validation

我目前正在使用下面的脚本来获取我的输入并将其转换为我想要的包含一些验证。 我已经设置了服务器端验证,并希望有一些客户端,我已经验证了输入的长度,但现在需要确保它们只包含数字。这是变量日,月和年。我尝试过使用IsNumeric()但无济于事

<script type="text/javascript">
function timeMachine() {

    var day     = $("#date_day").val();
    var month = $("#date_month").val();
    var year    = $("#date_year").val();

    if (day == "" && month == "" && year != ""){
        if (year.length != 4){
            alert("Please enter a valid year!");
        } else{
            window.location = "/date/" + year ;
        }   
    } else if (day == "" || month == "" || year == ""){
        alert("Please enter a full date!");
    } else{
        var myDate = new Date(year, month-1, day);

        var monthNames = [ "january", "february", "march", "april", "may", "june","july", "august", "september", "october", "november", "december" ];   

        window.location = "/date/" + year + "/" + monthNames[myDate.getMonth()] + "/" + day;
    }
    return false;
}
</script>

思想?

2 个答案:

答案 0 :(得分:4)

简单来说,如果您支持现代浏览器,请使用:

<input type="number" />

如果您可以使用JavaScript(和jQuery),则可以设置一个事件:

$(input).keydown(function (e) {
  if (e.keyCode >= 48 && e.keyCode <= 57) { //0-9 only
    return;
  }
  return false;
});

否则,在最后一级,您可以使用:

/^\d+$/.test(input.value);

答案 1 :(得分:1)

尝试以下功能:

function isNumber( num ) {
    return ! isNaN( parseFloat( num ) ) && isFinite( num );
}