【问题标题】:Preventing a function from working in JavaScript?! How?阻止函数在 JavaScript 中工作?!如何?
【发布时间】:2012-11-25 16:02:38
【问题描述】:

到目前为止,我已经开始使用单个 html 页面,使用单个表单 (<form> </form>) 作为显示的内容,因此单击提交按钮将淡出当前表单,然后淡入新表单。这是使用下载的 JavaScript 演示完成的。

但问题是,对于我们的任务,我们需要使用表单验证,因此当电子邮件和密码字段为空时,它会发出警报。因此,当单击提交按钮时,会出现警报窗口,但问题是当它应该保留在当前登录表单上时,表单更改仍然发生?

这是登录表单

<form class="login active" id="logform">
  <h3>Login</h3>
  <div>                         
    <label>Email:</label>                           
    <input id="email3" type="text" />                       
    <span class="error">This is an error</span> 
  </div>

  <div>                     
    <label>
      Password: <a rel="forgot_password" class="forgot linkform">Forgot your password?</a>
    </label>
    <input type="password" id="pass1" />                        
    <span class="error">This is an error</span>
  </div>

  <div class="bottom">                          
    <div class="remember"><input type="checkbox" /><span>Keep me logged in</span></div>
    <input id="logme" type="submit" onClick="ValidateLog();" rel="emailhome" class="linkform" value="Login"></input>`
    <a rel="register" class="linkform">You don't have an account yet? Register here</a>                   

    <div class="clear"></div>                       
  </div>                    
</form>

这是我试图将其切换到的表单

<form id="homeform" class="emailhome">
  <h3>Welcome to CM Email</h3>
  <div>
  </div>
</form>

*如果验证不正确,我只需要找出一种阻止表单更改的方法吗?我尝试使用删除属性类来阻止函数查找链接表单,但它仍然没有帮助!? *

function ValidateLog(){
  //EMAIL VALIDATION
  var emailblank = document.forms["logform"]["email3"].value;  
  if (emailblank==null || emailblank=="")
  {
    alert("Error: Please enter your email.");
    return false;
  }

  //PASS VALIDATION
  var passlog = document.forms["logform"]["pass1"].value;
  if (passlog==null || passlog=="")
  {
    alert("Error: Please enter your password.");
    return false;
  }
}

【问题讨论】:

标签: javascript html css forms


【解决方案1】:

您可以设置表单的onsubmit值:

如果表单被执行,那么您的验证函数必须返回“false”。一个例子:

function myValidateFunction() {
   if (<email is blank>) {
      return false;

   } else {
      return true;
   }
}

另一种方法是,替换提交按钮:

<button onlick="myValidateFunction()" type="button">Submit</button>

您必须将您的功能更改为:

function myValidateFunction() {
   if (<email is blank>) {
      // do nothing

   } else {
      document.getElementById("myForm").submit()
   }
}

【讨论】:

  • 它不起作用 :( 有没有机会我可以通过电子邮件将文件发送给您??
  • 我让它工作了,但是我不想去另一个 url,我想这样做,以便表单与另一个表单交换自己。它在提交按钮上使用它#rel="emailhome" class="linkform"# 来调用将其更改为 emailhome 表单的函数,有没有办法用你的方法做到这一点?很抱歉很痛苦!
【解决方案2】:

如果您使用 jQuery,因为您才刚刚开始学习,这会让您的事情变得更容易,那么您可以执行以下操作:

<script>
    $('#logform').submit(function(event){
        event.preventDefault(); // will stop redirect

        // now do your validation checks
        if ($('#email3').val() !== '') {
            alert("Error: Please enter your email.");
            return false; 
        } 
        if ($('#pass1').val() !== '') {
            alert("Error: Please enter your password."); 
            return false; 
        }

        // passed validation, do whatever's next...
    });
</script>

jQuery:http://jquery.com/

【讨论】:

  • $('#logform').submit(function(event){ event.preventDefault(); // 将停止重定向 var emailblank = document.forms["logform"]["email3"] .value; if (emailblank==null || emailblank=="") { alert("Error: Please enter your email."); return false; } var passlog = document.forms["logform"]["pass1" ].value; if (passlog==null || passlog=="") { alert("Error: Please enter your password."); return false; }// 现在做你的验证检查 // 如果验证是好的然后执行操作 // 否则显示错误通知 });那个?
  • 它不起作用 :( 有没有机会我可以通过电子邮件将文件发送给您??
  • 您在尝试我的代码时是否在文档中包含了 jQuery?
猜你喜欢
  • 2020-07-17
  • 2011-05-19
  • 1970-01-01
  • 2012-03-29
  • 2018-06-09
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多