Javascript 如何使用addEventListener进行输入验证?

Javascript 如何使用addEventListener进行输入验证?,javascript,html,Javascript,Html,我正在做一个用javascript和HTML进行表单验证的项目,但我似乎无法让addEventListener正常工作。我需要3个选项,一个用于检查在单击submit按钮时是否填写了所有必需的表单,一个用于检查他们在手机中输入的内容是否正确,另一个用于检查是否选择了其中一个单选按钮选项。我知道函数可以工作,但我就是无法触发addEventListener。 以下是活动: document.getElementById("_submit").addEventListener(&

我正在做一个用javascript和HTML进行表单验证的项目,但我似乎无法让addEventListener正常工作。我需要3个选项,一个用于检查在单击submit按钮时是否填写了所有必需的表单,一个用于检查他们在手机中输入的内容是否正确,另一个用于检查是否选择了其中一个单选按钮选项。我知道函数可以工作,但我就是无法触发addEventListener。 以下是活动:

document.getElementById("_submit").addEventListener("click", submit(),useCapture);
document.getElementById("phone").addEventListener("input", checkInputPhone(), useCapture);
document.getElementByName("type").addEventListener("submit", checkType(), useCapture);
以下是HTML:

<label>Phone Number: Please enter in this format-(XXX-XXX-XXXX)*required</label>
<input type="tel" id="phone" name="phone" required pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}">
<p id = "_phone" name = "errorMessage"></p>
<div id="credit_type">
            <h3>Credit Card type:</h3>
            <input type="radio" id="visa" name="type" value="visa">
            <label for="visa">Visa</label>
            <input type="radio" id="master" name="type" value="master">
            <label for="master">Mastercard</label>
            <input type="radio" id="american" name="type" value="american">
            <label for="american">American Express</label>
            <p id = "_type"></p>
</div>
<button type="submit" id = "_submit">Validator</button>
<button type="buttom" onclick = "reset()">Reset</button>
        <p id="sub" name = "errorMessage"></p>
方法是:

const myForm=document.forms['my-form']//关于表单的所有内容的全局常量
;
myForm.phone.oninvalid=\u=>//myForm的name=“phone”上的事件侦听器无效
{
myForm.phone.setCustomValidity('不是有效输入')
}
myForm.type.oninvalid=\u=>//name=“type”上的事件侦听器无效
{
myForm.type.setCustomValidity('需要进行类型选择')
}
myForm.onsubmit=evt=>//提交事件侦听器位于表单上,而不是按钮上
{
evt.preventDefault()//禁用表单提交(用于此处的测试)
//显示值:
控制台清除()

console.log('phone=',myForm.phone.value)//我会检查您是否在文档准备就绪后添加这些事件侦听器。根据给定的信息,我会假设您的JavaScript正在尝试在加载这些DOM元素之前访问这些元素。或者,您可能需要在调用submit函数时阻止默认表单submit。我将如何检查?I将它们放在一个外部js文件中,该文件链接在头部。当您按函数名向事件侦听器添加函数时,不要使用参数。该参数应为
。addEventListener(“单击”,提交,
。addEventListener(“单击”,提交(),
您需要使用
来检查文档是否准备就绪,您可以使用以下命令:
document.addEventListener(“DOMContentLoaded”,函数(事件){//add all listener here})
但您可能不需要这个,请先尝试@dc62建议的方法,正如Jojo先生所说,确保您的输入字段被包装在标记中
function submit(){
    getAddress();
    getName();
    getCreditInfo();
    document.getElementById("total").innerHTML = total;  
}
function checkInputPhone(){
    var input = document.getElementById("phone").value;
    if(!input.checkValidity()){
        document.getElementById("_phone").innerHTML = "Not a valid input";
    }
}

function checkType(){
    var input = document.getElementByName("type").value;
    if (input == ""){
        document.getElementById("_type").innerHTML = "A type selection is required.";
    }
}