【发布时间】:2018-10-25 15:07:39
【问题描述】:
我有一个 JavaScript 代码来验证我的联系表单并执行 POST 到 PHP 脚本,问题是脚本忽略 IF 语句并在我的 validateForm 函数的响应为假时执行发布。
如果 validateForm() 返回 false,它仍在执行 POST 操作
这是带有函数结果的控制台打印
我的 JS 代码:
$(document).ready(function() {
$("form[name='contactf']").submit(function(e) {
// do the extra stuff here
e.preventDefault();
console.log(validateForm());
if(validateForm()){
$.ajax({
type: "POST",
url: "mail.php",
data: $(this).serialize(),
success: function(data) {
if(data.message == 'success'){
M.toast({html: 'Mensagem enviada com sucesso!'})
$('#first_name').val('');
$('#last_name').val('');
$('#subject').val('');
$('#email').val('');
$('#phone').val('');
$('#details').val('');
}else if(data.message == 'error'){
M.toast({html: 'Ops... Tente novamente dentro de alguns minutos.'})
}
}
})
}
else
;
})
function validateForm()
{
var name=document.forms["contactf"]["first_name"].value;
var surname=document.forms["contactf"]["last_name"].value;
var subject=document.forms["contactf"]["subject"].value;
var mail=document.forms["contactf"]["email"].value;
var phone=document.forms["contactf"]["phone"].value;
var details=document.forms["contactf"]["details"].value;
var isnum = /^\d+$/.test(phone);
if(!isnum){
M.toast({html: 'O telefone deve conter apenas números!'});
return false;
}
else if (!name || !surname || !subject || !mail || !phone || !details)
{
M.toast({html: 'Preencha todos os campos!'})
return false;
}
else
return true;
}
function id( el ){
return document.getElementById( el );
}
})
【问题讨论】:
-
你能完全确定你的 validateForm 函数没有返回 true 吗?
-
你调试了吗?如果您逐步执行该功能,则应该很清楚正在发生什么。如上所述,您的 IF 逻辑看起来很奇怪......
-
等等 -
else if中的validateForm()是错误的。你用逗号分隔表达式,我怀疑那是你真正想要的。逗号不会像你想的那样。 -
我以前从未见过这种语法(使用逗号):
if (name==null || name=="",surname==null || ... -
逗号运算符
,应该是另一个逻辑或||否则你只是在测试details
标签: javascript jquery ajax if-statement materialize