简体   繁体   English

如何使用jQuery解决此冲突

[英]How to resolve this conflict with jQuery

Can anyone please help me resolve this conflict with my javascript validation? 任何人都可以通过我的JavaScript验证帮助我解决此冲突吗?

The form does not submit. 该表格未提交。 But if I remove onsubmit="return btnSubmitPD_OnClick() it redirect the form correctly. But of course I need that function. 但是,如果我删除onsubmit="return btnSubmitPD_OnClick()它将正确地重定向表单,但是我当然需要该函数。

Here's my code: 这是我的代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Testing</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function(){ 
$('#Submit').click(function() {
    var emailVal = $('#email').val();
    $.post('checkemail.php', {'email' : emailVal}, function(data) {
        if(data=='exist') {
            alert('in'); return false;
        }else{
            $('#form1').submit();
        }

    });
});});
</script>
<script type="text/javascript"> 
function appIsEmail(str){
    var at="@";
    var dot=".";
    var lat=str.indexOf(at);
    var lstr=str.length;
    var ldot=str.indexOf(dot);
    if (str.indexOf(at)==-1) return false; 

    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) return false;
    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) return false;
    if (str.indexOf(at,(lat+1))!=-1) return false;
    if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) return false;
    if (str.indexOf(dot,(lat+2))==-1) return false;
    if (str.indexOf(" ")!=-1) return false;

     return true;
}

function btnSubmitPD_OnClick(){
    frmReg = document.getElementById("form1");

    if (!appIsEmail(frmReg.email.value)){
        alert("Please enter a valid email address!");
        frmReg.email.focus();
        return false;        
    }

    return true;
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="view.php" onsubmit="return btnSubmitPD_OnClick()">
  <p>
    <input type="text" name="email" id="email" />
  </p>
  <p>
    <input type="button" name="Submit" id="Submit" value="Submit" />
  </p>
</form>
</body>
</html>

Several Things: 几件事:

It is better to bind a submit event to your form, rather than a click event on your submit button, this is to cater for cases where users press enter on the email text field: 最好将一个Submit事件绑定到您的表单上,而不是在您的Submit按钮上单击一个click事件,这是为了解决用户在电子邮件文本字段上按Enter的情况:

$('#form1').submit(function() { // change from $('#Submit').click

Then inside the new submit handler, you call call the email validation method: 然后在新的submit处理程序内,调用调用电子邮件验证方法:

var emailVal = $('#email').val();
if(btnSubmitPD_OnClick() === false) return false;

Then, to avoid infinite submit loop, you need to change: 然后,为避免无限submit循环,您需要更改:

else{
            $('#form1').submit();
        }

to

else{
            $('#form1')[0].submit(); // native submit on form element
        }

Or as mplungjan noted in his comment, simply change your 还是mplungjan在他的评论中指出,只需更改您的

<input type="button" name="Submit" id="Submit" value="Submit" />

To use type="submit" 使用type="submit"

<input type="submit" name="Submit" id="Submit" value="Submit" />

And add 并添加

if(btnSubmitPD_OnClick() === false) return false;

Before your call to $.post 在致电$.post之前

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM