尝试在HTML中验证函数

时间:2014-05-04 06:11:07

标签: javascript html validation

对于我的HTML,我试图验证带有邮政编码输入的表单。

但此输入无效(或未被识别)。对于我的邮政编码输入,我希望文本框只接受数字。

邮政编码输入:

var Postcode = document.forms["Rego"]["postcode"].value;
var e = Postcode;           
var code = e.keyCode; 
if (code > 47 && code < 58) || code == 40 || code == 41 || code == 43) {
    return true;
}
alert("Invalid Postcode. Please enter numbers only.");
    return false;

我做错了什么?

6 个答案:

答案 0 :(得分:1)

要仅接受数字,您可以使用(对于HTML5):

<input type="number" name="whatever">

另外,如果你想用js验证它(不推荐在浏览器中这样做,因为任何人都可以修改你的js文件并将内容推送到服务器)或服务器代码,这里有一些见解: 尝试将传递给服务器的字符串转换为数字。例如,在python中,您可以执行:int(whatever)。如果转换失败,则表示字符串不是数字。

希望有所帮助:)

答案 1 :(得分:1)

在你的情况下,如果在第4行之后,为什么你关闭了??? ???

答案 2 :(得分:1)

你做错了很多事。您没有设置事件处理程序,实际上是绑定到输入框中的值。您必须首先获取表示文本框的DOM元素,然后将事件处理程序绑定到DOM元素。试试这个:

var Postcode = document.getElementById('post');
Postcode.onclick = function(e) {
         console.log(e);     
    var code = e.keyCode; 
    if (code > 47 && code < 58 || code == 40 || code == 41 || code == 43) {
        return true;
    }
    alert("Invalid Postcode. Please enter numbers only.");
        e.preventDefault()
        return false;
}

小提琴:http://jsfiddle.net/S47gV/

答案 3 :(得分:0)

如果您使用HTML5,则可以自动设置。

<input type="number" name="quantity" min="47" max="58">

答案 4 :(得分:0)

使用下面的代码textbox / inputbox只允许数值

$j('#inputbox_id').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();
                        }
                    }
                });

如果要设置文本框/输入框的长度,请设置“maxlength = 5”

答案 5 :(得分:0)

我想我发现你做错了什么:

您正在从输入类型中读取邮政编码值,然后比较其键码。

但是,它可能仅在您的输入具有单个数字时才有效,并且当您在其中键入更多字符时,您的邮政编码变量会变为某些内容,例如5436,然后当您使用键码函数时,它将无法按预期工作。