在添加验证之前,表单正确发布。
有这个表单,它验证了电子邮件,完成后表单完成了onsubmit
javascript函数,但表单的数据没有发布?为什么呢?
此外,我尝试使用该操作,但在验证表单后,从未使用该操作。
以下是表格:
<form id="signup_form" name="signup_form" method="post" onsubmit="loadPage('registration')">
<!--action="/registration" method="post"-->
<h2>E-MAIL ADDRESS<sup><b>*</b></sup></h2>
<input value="<?=$uEmail?>" type="text" name="signup_email" id="signup_email" size="40" class="" style="margin-right:6px;font-size:18px" /><br /><label for="signup_email">Example: me@mydomain.com</label>
<br class="clear" /><br />
<h2>PASSWORD<sup><b>*</b></sup></h2>
<input type="password" name="requiredpWord" id="requiredpWord" size="15" style="width:120px" ><br />
<h2>CONFIRM PASSWORD<sup><b>*</b></sup></h2>
<input type="password" name="requiredcpWord" id="requiredcpWord" size="15" style="width:120px" ><br />
<button id="submitBTN" type="submit" value="COMPLETE SIGNUP">COMPLETE SIGN UP</button>
</form>
操作已被注释掉,我尝试使用它来替换onsubit,但是当我按下按钮的操作时什么也没做。
这是JQuery验证的形式,它有效。我添加了submitHandler以查看表单是否包含帖子。到目前为止它什么都没做。
$(function() {
$("#signup_form").validate({
rules: {
signup_email: {
email: true,
required: true,
remote: {
type: 'post',
url: 'registration/isEmailAvailable',
data: {
email:
function() {
// console.log(data);
return $( "#signup_email" ).val();
}
}
}
},
requiredpWord: {
required: true,
minlength: 8
},
requiredcpWord: {
equalTo: "#requiredpWord"
}
},
messages: {
signup_email: {
required: "Please provide an email",
email: "Please enter a valid email address"//,
},
requiredpWord: {
required: "Please provide a password.",
minlength: "Your password must be at least 8 characters long"
},
requiredcpWord: "Your passwords do not match."
},
invalidHandler: function(form, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
var message = errors == 1
? 'Please correct the following error:\n'
: 'Please correct the following ' + errors + ' errors.\n';
var errors = "";
if (validator.errorList.length > 0) {
for (x=0;x<validator.errorList.length;x++) {
errors += "\n\u25CF " + validator.errorList[x].message;
}
}
alert(message + errors);
}
validator.focusInvalid();
},
//added this to see if the form would post, did not change it
submitHandler:
function(form) {
// do other things for a valid form
form.submit();
}
});
php代码很简单......
var_dump($_POST);
var_dump($_GET);
POST 会返回一个空数组。根本没有表格数据。
GET 返回“注册”
loadPage("registration")
功能仅限于以下内容:
function loadPage(name){
window.location.replace('/'+name);
}
重申我的问题:
为什么POST中缺少表单数据?
BONUS:为什么在表单验证后该操作什么都不做,但onsubmit有效?请注意,如果我从JQuery验证中排除submitHandler
,则会成立。
更新:测试表单验证,表单正确验证为真或假。
$( "#submitBTN" ).click(function() {
alert( "Valid: " + $("#signup_form").valid() );
});
更新
更新4 问题存在于用于电子邮件验证的远程帖子。如果我注释掉远程验证,帖子实际上就完成了。根据这一发现开启了一个新问题。
答案 0 :(得分:0)
删除onsubmit="loadPage('registration')"
并取消注释submitHandler
部分应该可以胜任。
同时取消注释表单属性列表中的action="/registration"