Javascript 提交中的问题-更新
谢谢你到目前为止的投入。 逻辑是存在的,但它仍然不想提交时,通过真提交。。。 我添加了一个警报,以查看它是否在值为true时被调用,但由于某些奇怪的原因,“return false”没有传递值以提交 我不明白问题是什么。开始感到害怕了,哈哈Javascript 提交中的问题-更新,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,谢谢你到目前为止的投入。 逻辑是存在的,但它仍然不想提交时,通过真提交。。。 我添加了一个警报,以查看它是否在值为true时被调用,但由于某些奇怪的原因,“return false”没有传递值以提交 我不明白问题是什么。开始感到害怕了,哈哈 <form name="newuser" id="form" method="post" action="do_new_user.php" onSubmit="return validateForm(false)"> fun
<form name="newuser" id="form" method="post" action="do_new_user.php" onSubmit="return validateForm(false)">
function validateForm(submitNow){
if (submitNow == true){
alert ('call ok');
return true;
}
else
{
var x=document.forms["newuser"]["name"].value;
var x2=document.forms["newuser"]["surname"].value;
var x3=document.forms["newuser"]["email"].value;
var x4=document.forms["newuser"]["password1"].value;
var x5=document.forms["newuser"]["password2"].value;
if (x==null || x=="")
{
$("#form_status").fadeIn("slow");
$("#form_status").text("Please enter your name.");
return false;
}
if (x2==null || x2=="")
{
$("#form_status p").fadeIn("slow");
$("#form_status").text("Please enter your surname.");
return false;
}
if (x3==null || x3=="")
{
$("#form_status").fadeIn("slow");
$("#form_status").text("Please enter your email address.");
return false;
}
var atpos=x3.indexOf("@");
var dotpos=x3.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x3.length)
{
$("#form_status").fadeIn("slow");
$("#form_status").text("Email address in invalid.");
return false;
}
if (x4==null || x4=="")
{
$("#form_status").fadeIn("slow");
$("#form_status").text("Please enter your password.");
return false;
}
if (x5==null || x5=="")
{
$("#form_status").fadeIn("slow");
$("#form_status").text("Please re-enter your password.");
return false;
}
if (x4!==x5)
{
$("#form_status").fadeIn("slow");
$("#form_status").text("Password Mismatch.");
return false;
}
//Check if username exists.
$.post("http://ryangosden.com/breadcrumbs/check_user_exists.php",
{
x3 : x3
} ,
function(data)
{
var obj = jQuery.parseJSON(data);
if (obj.email_exists == 1)
{
$("#form_status").fadeIn("slow");
$("#form_status").text("Email Address Taken.");
}
if (obj.email_exists == 2)
{
$("#form_status").fadeIn("slow");
$("#form_status").text("Email ok.");
validateForm(true);
}
});
return false;
}
}
函数validateForm(submitNow){
if(submitNow==true){
警报(“呼叫正常”);
返回true;
}
其他的
{
var x=document.forms[“newuser”][“name”].value;
var x2=document.forms[“新用户”][“姓氏”]。值;
var x3=document.forms[“newuser”][“email”].value;
var x4=document.forms[“newuser”][“password1”]。值;
var x5=document.forms[“newuser”][“password2”].value;
如果(x==null | | x==“”)
{
美元(“#表格#状态”).fadeIn(“慢”);
$(“表格状态”)。文本(“请输入您的姓名”);
返回false;
}
如果(x2==null | | x2==“”)
{
美元(“#form#U status p”)。fadeIn(“慢”);
$(“#表格#U状态”)。文本(“请输入您的姓氏”);
返回false;
}
如果(x3==null | | x3==“”)
{
美元(“#表格#状态”).fadeIn(“慢”);
$(“表格状态”)。文本(“请输入您的电子邮件地址”);
返回false;
}
var atpos=x3.indexOf(“@”);
var dotpos=x3.lastIndexOf(“.”);
如果(atpos如果我理解正确,则应在未接收电子邮件时提交表单(以及所有其他字段正常)
这似乎是在代码的这一点上完成的:
$("#form_status").fadeIn("slow");
$("#form_status").text("Email ok.");
validateForm(true);
}
您必须捕获参数,以便提交表单,这可以在函数开始时完成:
function validateForm(submitNow) {
if (submitNow) return true;
[... rest of function...]
}
感谢A.沃尔夫和卡尔·安德烈·加农的评论,我的第一个回答太快了:)
更新:
下面是一个可以扩展的工作示例
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
function validateform(submitNow) {
if (submitNow) return true;
else if ($('#input').val()) return validateform(true);
alert('Please enter a value');
return false;
}
</script>
<form id="#form" action="http://google.com" onsubmit="javascript:return validateform()">
<input type="text" id="input"><input type="submit">
</form>
函数validateform(submitNow){
if(submitNow)返回true;
else if($('#input').val())返回validateform(true);
警报(“请输入值”);
返回false;
}
这将递归调用submit方法true…因此它必须捕获参数…我将在post call中编辑我的answerReturn不会提交表单。@OP这里有一个巨大的安全问题,您需要进行PHP验证,因为用户可以在post调用期间更改值,但我相信您知道。+1 Karl Andre,或者至少,仔细检查数据在提交后,如果用户强制提交表单(这很简单),则拒绝。这让我感到困惑…当所有值都为真时,仍然不提交…有人知道问题在哪里吗?谢谢