preventDefault 在 Safari 中的表单提交中不起作用
preventDefault not working in form submit in Safari
我正在尝试让 Safari 验证我的表单并在未填写必填字段时停止提交。我目前有以下提交功能。
$('#qtrAuditform').on('submit', function(event) {
event.preventDefault();
var uagent = navigator.userAgent.toLowerCase();
if (/safari/.test(uagent) && !/chrome/.test(uagent)) {
//If required attribute is not supported or browser is Safari (Safari thinks that it has this attribute, but it does not work), then check all fields that has required attribute
$("#qtrAuditform [required]").each(function(index) {
if (!$(this).val()) {
//If at least one required value is empty, then ask to fill all required fields.
alert("Please fill all required fields.");
event.preventDefault();
return false;
}
});
}
var $form = $(this),
data = $form.serialize();
var url = 'http://localhost:8888/datatest';
$.ajax({
type: 'POST',
url: url,
data: data,
success: function() {
alert('Your form has been successfully submitted!');
},
fail: function() {
alert('something went wrong...try again');
}
});
});
我收到请填写必填字段的提醒,但紧接着我又收到表单已提交的提醒。我怎样才能不提交表单,同时仍然填写需要填写的字段?
整个事件应该立即 return false。
$('#qtrAuditform').on('submit', function(event) {
event.preventDefault();
var uagent = navigator.userAgent.toLowerCase();
if (/safari/.test(uagent) && !/chrome/.test(uagent)) {
//If required attribute is not supported or browser is Safari (Safari thinks that it has this attribute, but it does not work), then check all fields that has required attribute
$("#qtrAuditform [required]").each(function(index) {
if (!$(this).val()) {
//If at least one required value is empty, then ask to fill all required fields.
alert("Please fill all required fields.");
event.preventDefault();
return false;
}
});
}
var $form = $(this),
data = $form.serialize();
var url = 'http://localhost:8888/datatest';
$.ajax({
type: 'POST',
url: url,
data: data,
success: function() {
alert('Your form has been successfully submitted!');
},
fail: function() {
alert('something went wrong...try again');
}
});
//Return false immediately
return false;
});
希望对您有所帮助。
这就是我现在拥有的,有效。
$('#qtrAuditform').on('submit',function(event){
//event.preventDefault();
var uagent = navigator.userAgent.toLowerCase();
if(/safari/.test(uagent) && !/chrome/.test(uagent)) {
//If required attribute is not supported or browser is Safari (Safari thinks that it has this attribute, but it does not work), then check all fields that has required attribute
$("#qtrAuditform [required]").each(function(index) {
if (!$(this).val()) {
//If at least one required value is empty, then ask to fill all required fields.
alert("Please fill all required fields.");
//event.preventDefault();
return false;
}
});
return false;
}
var $form = $(this),
data = $form.serialize();
var url = 'http://localhost:8888/datatest';
$.ajax({
type: 'POST',
url: url,
data: data,
success: function(){
//window.location = "http://www.google.com";
alert('Your form has been successfully submitted!');
},
fail:function(){
alert('something went wrong...try again');
}
});
return false;
});
唯一没有正确完成的是 return 表单已在 Safari 中正确提交的警告。它确实 return 在其他浏览器中发出警报。
我正在尝试让 Safari 验证我的表单并在未填写必填字段时停止提交。我目前有以下提交功能。
$('#qtrAuditform').on('submit', function(event) {
event.preventDefault();
var uagent = navigator.userAgent.toLowerCase();
if (/safari/.test(uagent) && !/chrome/.test(uagent)) {
//If required attribute is not supported or browser is Safari (Safari thinks that it has this attribute, but it does not work), then check all fields that has required attribute
$("#qtrAuditform [required]").each(function(index) {
if (!$(this).val()) {
//If at least one required value is empty, then ask to fill all required fields.
alert("Please fill all required fields.");
event.preventDefault();
return false;
}
});
}
var $form = $(this),
data = $form.serialize();
var url = 'http://localhost:8888/datatest';
$.ajax({
type: 'POST',
url: url,
data: data,
success: function() {
alert('Your form has been successfully submitted!');
},
fail: function() {
alert('something went wrong...try again');
}
});
});
我收到请填写必填字段的提醒,但紧接着我又收到表单已提交的提醒。我怎样才能不提交表单,同时仍然填写需要填写的字段?
整个事件应该立即 return false。
$('#qtrAuditform').on('submit', function(event) {
event.preventDefault();
var uagent = navigator.userAgent.toLowerCase();
if (/safari/.test(uagent) && !/chrome/.test(uagent)) {
//If required attribute is not supported or browser is Safari (Safari thinks that it has this attribute, but it does not work), then check all fields that has required attribute
$("#qtrAuditform [required]").each(function(index) {
if (!$(this).val()) {
//If at least one required value is empty, then ask to fill all required fields.
alert("Please fill all required fields.");
event.preventDefault();
return false;
}
});
}
var $form = $(this),
data = $form.serialize();
var url = 'http://localhost:8888/datatest';
$.ajax({
type: 'POST',
url: url,
data: data,
success: function() {
alert('Your form has been successfully submitted!');
},
fail: function() {
alert('something went wrong...try again');
}
});
//Return false immediately
return false;
});
希望对您有所帮助。
这就是我现在拥有的,有效。
$('#qtrAuditform').on('submit',function(event){
//event.preventDefault();
var uagent = navigator.userAgent.toLowerCase();
if(/safari/.test(uagent) && !/chrome/.test(uagent)) {
//If required attribute is not supported or browser is Safari (Safari thinks that it has this attribute, but it does not work), then check all fields that has required attribute
$("#qtrAuditform [required]").each(function(index) {
if (!$(this).val()) {
//If at least one required value is empty, then ask to fill all required fields.
alert("Please fill all required fields.");
//event.preventDefault();
return false;
}
});
return false;
}
var $form = $(this),
data = $form.serialize();
var url = 'http://localhost:8888/datatest';
$.ajax({
type: 'POST',
url: url,
data: data,
success: function(){
//window.location = "http://www.google.com";
alert('Your form has been successfully submitted!');
},
fail:function(){
alert('something went wrong...try again');
}
});
return false;
});
唯一没有正确完成的是 return 表单已在 Safari 中正确提交的警告。它确实 return 在其他浏览器中发出警报。