Javascript 函数 returns 未定义,因为它不应该是
Javascript function returns undefined as it should not be
我有检查某个 class 动态输入字段的功能。这些字段采用电子邮件地址,因此检查它是否是有效的电子邮件地址。
可以有多个email字段,如果其中一个没有通过email地址测试,它应该return FALSE
,否则它应该return TRUE
。最后,当点击提交时 save_form()
运行。如果它得到 false
,它应该停止,否则继续。但它总是 "undefined"。
这是我的:
function validate_email_string(email_address) {
var emailReg=/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
var emailTest = emailReg.test(email_address);
var result = (emailTest === false) ? false : true;
return result;
}
function validate_email_extensions(email_field_selector, message) {
var invalid_message = null;
if (typeof message !== "undefined") {
invalid_message = message;
} else {
invalid_message = '<?=lang("i18n_invalid_email_address");?>';
}
var email_fields_length = $(email_field_selector).length;
var is_valid = true;
if (email_fields_length) {
$(email_field_selector).each(function(index, el) {
if($(el).val()) {
if(!validate_email_string($(el).val())) {
is_valid = false;
}
if (index === email_fields_length - 1) {
if (is_valid === false) {
Interact.show(invalid_message);
}
return is_valid;
}
} else {
if (index === email_fields_length - 1) {
if (is_valid === false) {
Interact.show(invalid_message);
}
return is_valid;
}
}
});
} else {
return is_valid;
}
}
function save_form() {
var emails = validate_email_extensions('.jq-extension-email');
if(!emails){return false}
....
但是 validate_email_extensions
函数 return 未定义。我把 console.log()
放在各处,可能它对我视而不见,但非常感谢任何帮助。
您的 return 是从您的循环到 validate_email_extensions
,而不是您期望的从 validate_email_extensions
到 save_form
。
validate_email_extensions
需要 return 值仍然 save_form
。
唯一一次你的函数正确 returning 一个值是在这种情况下 FALSE
if (email_fields_length) {
当控制进入 if
条件时,它 return 没有任何价值。
我有检查某个 class 动态输入字段的功能。这些字段采用电子邮件地址,因此检查它是否是有效的电子邮件地址。
可以有多个email字段,如果其中一个没有通过email地址测试,它应该return FALSE
,否则它应该return TRUE
。最后,当点击提交时 save_form()
运行。如果它得到 false
,它应该停止,否则继续。但它总是 "undefined"。
这是我的:
function validate_email_string(email_address) {
var emailReg=/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
var emailTest = emailReg.test(email_address);
var result = (emailTest === false) ? false : true;
return result;
}
function validate_email_extensions(email_field_selector, message) {
var invalid_message = null;
if (typeof message !== "undefined") {
invalid_message = message;
} else {
invalid_message = '<?=lang("i18n_invalid_email_address");?>';
}
var email_fields_length = $(email_field_selector).length;
var is_valid = true;
if (email_fields_length) {
$(email_field_selector).each(function(index, el) {
if($(el).val()) {
if(!validate_email_string($(el).val())) {
is_valid = false;
}
if (index === email_fields_length - 1) {
if (is_valid === false) {
Interact.show(invalid_message);
}
return is_valid;
}
} else {
if (index === email_fields_length - 1) {
if (is_valid === false) {
Interact.show(invalid_message);
}
return is_valid;
}
}
});
} else {
return is_valid;
}
}
function save_form() {
var emails = validate_email_extensions('.jq-extension-email');
if(!emails){return false}
....
但是 validate_email_extensions
函数 return 未定义。我把 console.log()
放在各处,可能它对我视而不见,但非常感谢任何帮助。
您的 return 是从您的循环到 validate_email_extensions
,而不是您期望的从 validate_email_extensions
到 save_form
。
validate_email_extensions
需要 return 值仍然 save_form
。
唯一一次你的函数正确 returning 一个值是在这种情况下 FALSE
if (email_fields_length) {
当控制进入 if
条件时,它 return 没有任何价值。