如何使用 javascript 中的多个函数验证表单

How to validate form using several functions in javascript

这两个功能完美地工作,但我一次只能使用一个,表单应该检查密码和 link 用户根据所选的单选按钮转到其他页面。有什么方法可以让它发挥作用吗??

密码验证功能。

function check() 
{ 
   var password=document.getElementById('password');
   var confirm=document.getElementById('confirm'); 

   if(password==confirm) 
   { 
       return true; 
   } 
   else 
   { 
      alert('Password do not match'); 
      return false; 
   } 

} 

功能 2:根据选择将用户定向到 2 个不同的 html 页面

function doSubmit(form) 
{ 
   var urls = form['url']; 
   var i = urls && urls.length; 
   while (i--) 
   { 
     if (urls[i].checked) 
     { 
       window.location = urls[i].value; 
     } 
   } 
     return false; 
}

这是html代码(我只包含了与这些功能相关的部分)

<form action="" onsubmit="return check()">


   <label for="password">Password</label>
    <input type="password" id="password" maxlength="20" size="10" required="true"    pattern=".{7,}" title="Password should be atleast 7 characters long"/>

   <br /><br />

  <label for="confirm">Confirm Password</label>
   <input type="password" id="confirm"" maxlength="20" size="10" required="true"   />
    <label for="mcq">MCQ</label>
   Beginner<input type="radio" name="url" value="begin" id="rdbegin"  value="beginner.html"required="true"/>
   <br />
  Expert<input type="radio" name="url" value="expert" id="rdexpert" value="expert.html"required="true"/>
  <br /><br />

  <button type="submit" id="submit">Submit</button>
</form>

编辑:

试试这个来获取单选按钮值:

function doSubmit(form) 
{ 
     var urls = form['url']; 
     console.log(urls.value);
     window.location = urls.value;
}

也可以使用 .value 获取密码值:

var password=document.getElementById('password').value;

否则以下条件将始终为假:

if(password==confirm) // because you were comparing two html nodes

这是working DEMO.


您可以在验证后简单地在第一个函数中调用第二个函数,如下所示:

function check() 
{ 
   var password=document.getElementById('password');
   var confirm=document.getElementById('confirm'); 

   if(password==confirm) 
   { 
       var form = document.getElementById('form'); //give id="form" to your form
       doSubmit(form);
       return true; 
   } 
   else 
   { 
      alert('Password do not match'); 
      return false; 
   } 

} 

并且对于 onSubmit() 函数避免使用 while 循环,这会导致无限循环,因为 i-- 永远为真,你可以简单地做:

var urls = form['url']; 
for(var i=0; urls[i]; ++i){
   if(urls[i].checked){
         console.log(urls[i].value); //try printing the url and see what it gets
         window.location = urls[i].value; // also change this to urls[i]
         break;
   }
}