Javascript 页面上有多个表单,验证功能最少

Javascript 页面上有多个表单,验证功能最少,javascript,html,validation,Javascript,Html,Validation,不使用JQuery,我在一个页面上有多个表单,不需要重新编写函数负载,您能帮我吗 <html><head> <script type="text/javascript"> function validPhone() { if(document.all.[phoneVar].value.length <= 7) alert("You must

不使用JQuery,我在一个页面上有多个表单,不需要重新编写函数负载,您能帮我吗

<html><head>
<script type="text/javascript">
function validPhone()   {
                            if(document.all.[phoneVar].value.length <= 7)
                            alert("You must enter a valid phone number");
                            document.all.[phoneVar].focus() ;
                            return false;
                        }


</script>
</head><body>

<script type="text/javascript">
function checkThisParticularForm()  {
    var phoneVar = document.GetElementById('phone').value; //set element id
    validPhone(); //this calls the validPhone function
}
</script>

<form action="./logging.php" method="post" enctype="multipart/form-data" name="NewCallForm" onsubmit="checkThisParticularForm();">
<input type="text" class="textbox" id="phoneNumber" name="phoneNumber" value="" />
<input type="submit"  value="Submit Details">
</form>

</body></html>

函数validPhone(){

if(document.all.[phoneVar].value.length这里有一个简单的方法,但首先必须将所有表单包装在一个
div id=“allforms”

window.onload=函数(){
document.getElementById('allforms')。addEventListener('submit',函数(e){
var pn=e.target.phoneNumber;

如果(pn.value.length考虑编写一个验证库,并使用HTML5
datafoo
属性来完成所有脏活:

<form ...>
    <input type="text" name="foo"
        data-validation-required="true">

    <input type="text" name="phone"
        data-validation-required="true"
        data-validation-required-message="The phone number is required"
        data-validation-format="^\\d{3}-\\d{3}-\\d{4}"
        data-validation-format-message="Please enter a valid phone number">

</form>

并创建一个JavaScript库来进行验证:

var Validator = {
    init: function() {
        document.documentElement.addEventListener("submit", this.handleSubmit.bind(this), false);
    },

    handleSubmit: function(event) {
        var form = event.target.form || event.target,
            requiredFields = form.querySelectorAll("[data-validation-required=true"),
            formattedFields = form.querySelectorAll("[data-validation-format]");

        if (!this.validateRequiredFields(requiredFields)) {
            event.preventDefault();
        }
        else if (!this.validateFormats(formattedFields)) {
            event.preventDefault();
        }
    },

    validateRequiredFields: function(fields) {
        var regex = /^\s*%/, i = 0,
            success = true;

        for (i; i < fields.length; i++) {
            if (regex.test(fields[i].value)) {
                this.showMessage(fields[i].getAttribute("data-valiation-required-message") || "This field is required", fields[i]);
                success = false;
            }
        }
    }

    validateFormats: function(fields) {
        var format, field,
            i = 0, length = fields.length,
            success = true;

        for (i; i < length; i++) {
            field = fields[i];
            format = new RegExp(field.getAttribute("data-validation-format"));

            if (!format.test(field.value)) {
                this.showMessage(field.getAttribute("data-validation-format-message"), field);
                success = false;
            }
        }

        return success;
    },

    showMessage: function(message, field) {
        field.classList.add("invalid");
        var span = document.createElement("span");
        span.className = "validation-error";
        span.innerHTML = message;
        field.parentNode.insertBefore(span, field);
    }
};

Validator.init();
var验证程序={
init:function(){
document.documentElement.addEventListener(“提交”,this.handleSubmit.bind(this),false);
},
handleSubmit:函数(事件){
var form=event.target.form | | event.target,
requiredFields=form.querySelectorAll(“[data validation required=true”),
formattedFields=form.querySelectorAll(“[data validation format]”);
如果(!this.validateRequiredFields(requiredFields)){
event.preventDefault();
}
如果(!this.validateFormats(formattedFields)){
event.preventDefault();
}
},
validateRequiredFields:函数(字段){
var regex=/^\s*%/,i=0,
成功=真实;
对于(i;i
这就是整个页面所需的全部内容,因为
document.documentElement
标记。由于
submit
事件会在文档树中冒泡出现,因此您只需要一个提交处理程序


(注意:这是未经测试的代码,但应该会告诉您基本的想法)

那么这只是客户端检查吗?因为在保存表单信息之前,您仍然应该在服务器端进行验证。
var Validator = {
    init: function() {
        document.documentElement.addEventListener("submit", this.handleSubmit.bind(this), false);
    },

    handleSubmit: function(event) {
        var form = event.target.form || event.target,
            requiredFields = form.querySelectorAll("[data-validation-required=true"),
            formattedFields = form.querySelectorAll("[data-validation-format]");

        if (!this.validateRequiredFields(requiredFields)) {
            event.preventDefault();
        }
        else if (!this.validateFormats(formattedFields)) {
            event.preventDefault();
        }
    },

    validateRequiredFields: function(fields) {
        var regex = /^\s*%/, i = 0,
            success = true;

        for (i; i < fields.length; i++) {
            if (regex.test(fields[i].value)) {
                this.showMessage(fields[i].getAttribute("data-valiation-required-message") || "This field is required", fields[i]);
                success = false;
            }
        }
    }

    validateFormats: function(fields) {
        var format, field,
            i = 0, length = fields.length,
            success = true;

        for (i; i < length; i++) {
            field = fields[i];
            format = new RegExp(field.getAttribute("data-validation-format"));

            if (!format.test(field.value)) {
                this.showMessage(field.getAttribute("data-validation-format-message"), field);
                success = false;
            }
        }

        return success;
    },

    showMessage: function(message, field) {
        field.classList.add("invalid");
        var span = document.createElement("span");
        span.className = "validation-error";
        span.innerHTML = message;
        field.parentNode.insertBefore(span, field);
    }
};

Validator.init();