Javascript preventDefault在Safari的表单提交中不起作用
我正试图让Safari验证我的表单,并在必填字段未填写时阻止其提交。我目前有以下提交功能Javascript preventDefault在Safari的表单提交中不起作用,javascript,html,forms,safari,preventdefault,Javascript,Html,Forms,Safari,Preventdefault,我正试图让Safari验证我的表单,并在必填字段未填写时阻止其提交。我目前有以下提交功能 $('#qtrAuditform').on('submit', function(event) { event.preventDefault(); var uagent = navigator.userAgent.toLowerCase(); if (/safari/.test(uagent) && !/chrome/.test(uagent)) { //If requi
$('#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');
}
});
});
我收到通知,请填写必填字段,但在收到通知后,我也立即收到表单已提交的通知。我怎样才能在仍然填写需要填写的字段时不提交表单?整个事件应立即返回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'。在'submit'上,functionevent{ //event.preventDefault; var uagent=navigator.userAgent.toLowerCase; if/safari/.testuagent&!/chrome/.testuagent{ //如果不支持required属性或浏览器为Safari Safari认为它具有此属性,但不起作用,则检查具有required属性的所有字段 $qtrAuditform[必需]。每个函数索引{ 如果!$this.val{ //如果至少有一个必填值为空,则要求填写所有必填字段。 请填写所有必填字段。; //违约事件; 返回false; } }; 返回false; } var$form=$this, 数据=$form.serialize; var url='1〕http://localhost:8888/datatest'; $.ajax{ 键入:“POST”, url:url, 数据:数据, 成功:功能{ //window.location=http://www.google.com; 警告“您的表单已成功提交!”; }, 失败:函数{ 警告“出现问题……请再试一次”; } }; 返回false;
};返回错误;必须应用于事件侦听器函数,而不是每个中的函数。另外,您有两次event.preventDefault;但我仍然得到相同的结果。建议?我尝试过这个,但仍然得到和以前一样的结果。