javascript - 页面上有多种表单,最少的验证功能

标签 javascript html validation

如果不使用 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>

在提交每个表单时,我希望它验证某些字段,在本例中是电话号码,但我想创建 1 个可以由其他表单调用的主函数,因此它包含一个变量 [phoneVar] 我试图在调用该函数之前声明它。 抱歉,如果这很简单,我不擅长 JavaScript,感谢任何帮助/指示。

最佳答案

这里有一个简单的方法来做到这一点,但首先您必须将所有表单包装在 div id="allforms" 中。

window.onload = function () {
    document.getElementById('allforms').addEventListener('submit', function (e) {
        var pn = e.target.phoneNumber;
        if (pn.value.length <= 7) {
            alert("You must enter a valid phone number");
            pn.focus() ;
            e.preventDefault();
        }
    });
}

这个想法是,submit 事件冒泡到 div,而您只需要做的就是监听该 submit 事件div。这称为事件委托(delegate)。

监听器函数中的

e.target指的是触发事件的元素。在本例中,要提交的是 form 元素。

由于 e.target 是一个 form,因此您可以直接引用命名的 form 元素。 document.all 是 IE 特定的,在 IE11 中已废弃。

e.preventDefault() 阻止事件后的默认操作,在这种情况下,它阻止提交表单。

A live demo at jsFiddle .

如果您也需要 IE<9 的支持,请告诉我,我将添加代码。

关于javascript - 页面上有多种表单,最少的验证功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23273604/

相关文章:

javascript - 用 OR 条件声明对象的目的是什么?

javascript - 循环使用 translate3d 制作的旋转木马

html - 选择和输入字段,相同的格式,不同的大小

validation - 带有字段的 Grails NumberFormatException 或 GroovyCastException,导致它

javascript - 参数为 null 的 addIceCandidate 导致错误

javascript - jQuery 选择表行中的所有复选框

html - 如何使固定导航与窗口顶部齐平

javascript - angularjs( ionic )中的表单验证对我不起作用

javascript - 如何在每个循环中等待所有回调

javascript - 如何将一些属性发送到回调函数?