JavaScript if 语句忽略条件
JavaScript if statement ignores condition
我有一个 JavaScript 代码来验证我的联系表并执行 POST 到 PHP 脚本,问题是脚本忽略了 IF 语句并执行 post 而我的 validateForm 函数的响应是假的。
如果 validateForm() returns 为假,它仍在执行 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 );
}
})
你的布尔逻辑是错误的。
您可以使用 !value
如果 value
为空或一个空字符串,然后 OR 所有这些都使用 ||
.
这是基于将类型强制转换为布尔值,有关更多信息,请参见例如this MDN page
示例:
function validateForm(v1, v2, v3) {
var name = v1;
var surname = v2;
var subject = v3;
if (!name || !surname || !subject)
return false;
else
return true;
}
console.log(validateForm(null, null, null));
console.log(validateForm(null, "", "Test"));
console.log(validateForm("John", "Smith", "Test"));
您需要更改 else if
条件。
像这样写条件:
else if (name==null || name=="" || surname==null || surname=="" || subject==null || subject=="" || mail==null || mail=="" || phone==null || phone=="" || details==null || details=="")
不要使用逗号(,)分隔。
我有一个 JavaScript 代码来验证我的联系表并执行 POST 到 PHP 脚本,问题是脚本忽略了 IF 语句并执行 post 而我的 validateForm 函数的响应是假的。
如果 validateForm() returns 为假,它仍在执行 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 );
}
})
你的布尔逻辑是错误的。
您可以使用 !value
如果 value
为空或一个空字符串,然后 OR 所有这些都使用 ||
.
这是基于将类型强制转换为布尔值,有关更多信息,请参见例如this MDN page
示例:
function validateForm(v1, v2, v3) {
var name = v1;
var surname = v2;
var subject = v3;
if (!name || !surname || !subject)
return false;
else
return true;
}
console.log(validateForm(null, null, null));
console.log(validateForm(null, "", "Test"));
console.log(validateForm("John", "Smith", "Test"));
您需要更改 else if
条件。
像这样写条件:
else if (name==null || name=="" || surname==null || surname=="" || subject==null || subject=="" || mail==null || mail=="" || phone==null || phone=="" || details==null || details=="")
不要使用逗号(,)分隔。