我有以下AJAX脚本,用于在用户注册其电子邮件地址时向用户返回随机PIN码:
HTML
<form class="form-inline" role="form" id="formRegister">
<div class="form-group">
<label class="sr-only" for="srEmail">Email address</label>
<input type="email" name="srEmail" class="form-control input-lg" id="srEmail" placeholder="Enter email">
</div>
<button type="button" name="srSubmit" onClick="getSubmitResponse();" class="btn btn-default btn-lg">Generate PIN</button>
</form>
JS
function getSubmitResponse(){
var emailId = $("#srEmail").val();
$.ajax({
type: "POST",
url: "register-ajax-call.php",
data: { srEmail: emailId, submiType: 'srSubmit'}
})
.done(function( html ) {
if(html.search('PIN:')!=-1){
window.location = "success.php?response="+html;
}else{
$( "#results").empty();
$("#results").append( html );
}
});
}
问题:在这种情况下,如何使用button type =“submit”而不是type =“button”?我的理由是,这是表单验证和更一致行为的更好标记(例如,当用户点击ENTER时)。
如果这是一个解决方案,我也在使用jQuery。
答案 0 :(得分:2)
您可以像这样使用 .submit()
jQuery方法
$("#formRegister").submit(function(event) {
var form = $( this ),
url = form.attr( 'action' );
var posting = $.post( url, { srEmail: ("#srEmail").val() } );
posting.done(function( data ) {
$("#results").append( html );
});
});
但是,在提交之前,您应该考虑在客户端进行验证。由于你已经使用了jQuery,我建议你看一下jQuery.validate
,因为你的表单有更多的属性。
答案 1 :(得分:1)
你可以这样做:
jQuery的:
$("#formRegister").on("submit", function() {
$.ajax({
// Rest of code
});
return false;
});
答案 2 :(得分:1)
只需使用onsubmit事件而不是onclick事件。
http://www.w3schools.com/jsref/event_form_onsubmit.asp
然后在你的ajax函数中返回false;就像那样,表格不会像往常一样发送,浏览器也不会刷新页面。
希望有所帮助