Javascript 如何使用jQuery解决此冲突

Javascript 如何使用jQuery解决此冲突,javascript,jquery,Javascript,Jquery,有人能帮我解决javascript验证的冲突吗 表格不提交。但是如果我删除onsubmit=“return btnSubmitPD\u OnClick()它会正确重定向表单。但是我当然需要这个函数 这是我的密码: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Testing</title> <sc

有人能帮我解决javascript验证的冲突吗

表格不提交。但是如果我删除
onsubmit=“return btnSubmitPD\u OnClick()
它会正确重定向表单。但是我当然需要这个函数

这是我的密码:

<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>

测试
$(文档).ready(函数(){
$(“#提交”)。单击(函数(){
var emailVal=$('#email').val();
$.post('checkemail.php',{'email':emailVal},函数(数据){
如果(数据==“存在”){
警报('in');返回false;
}否则{
$('表格1')。提交();
}
});
});});
函数appIsEmail(str){
var at=“@”;
var dot=“.”;
var lat=str.indexOf(at);
var lstr=str.length;
var ldot=str.indexOf(点);
if(str.indexOf(at)=-1)返回false;
if(str.indexOf(at)=-1 | | str.indexOf(at)==0 | | str.indexOf(at)==lstr)返回false;
if(str.indexOf(dot)=-1 | | str.indexOf(dot)==0 | | str.indexOf(dot)==lstr)返回false;
if(str.indexOf(at,(lat+1))!=-1)返回false;
if(str.substring(lat-1,lat)=dot | | str.substring(lat+1,lat+2)==dot)返回false;
if(str.indexOf(dot,(lat+2))=-1)返回false;
if(str.indexOf(“”)=-1)返回false;
返回true;
}
函数btnSubmitPD_OnClick(){
frmReg=document.getElementById(“form1”);
如果(!appIsEmail(frmReg.email.value)){
警报(“请输入有效的电子邮件地址!”);
frmReg.email.focus();
返回false;
}
返回true;
}

有几件事:

最好将提交事件绑定到表单,而不是在提交按钮上单击事件,这是为了满足用户在电子邮件文本字段中按enter键的情况:

$('#form1').submit(function() { // change from $('#Submit').click
然后在新的
submit
处理程序中,调用电子邮件验证方法:

var emailVal = $('#email').val();
if(btnSubmitPD_OnClick() === false) return false;
然后,为了避免无限
submit
循环,您需要更改:

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

或者正如姆普隆詹在评论中指出的那样,只需改变你的想法

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

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

在调用
$.post

或将按钮更改为submit按钮并返回true/false之前,您甚至可以执行
返回btnSubmitPD_OnClick();
@ArunJain为什么建议
.noConflict
<input type="submit" name="Submit" id="Submit" value="Submit" />
if(btnSubmitPD_OnClick() === false) return false;