У меня есть формуляр, что, когда послано пламя в функцию, но не звонит в функцию valida_envia()
.
У меня есть рукописный шрифт в различных файлах я звоню в функцию valida_envia()
что помещен в файле .js
Это мой код (также доступный в JSFiddle)
function valida_envia() {
//Definimos los caracteres permitidos en una dirección de correo electrónico
var regexp = /^[0-9a-zA-Z._.-]+\@[0-9a-zA-Z._.-]+\.[0-9a-zA-Z]+$/;
//Validamos un campo o área de texto, por ejemplo el campo nombre
if (document.form.nombre.value.length == 0) {
alert("Tiene que escribir su nombre");
document.form.nombre.focus();
return 0;
}
if ((regexp.test(document.form.email.value) == 0) || (document.form.email.value.length = 0)) {
alert("Introduzca una dirección de email válida");
document.form.email.focus();
return 0;
} else {
var c_email = true;
}
document.form.submit();
}
Если ты проверяешь пример в jsfiddle
краях, который ты должен менять ему, где ты помещаешь функцию
в твоем примере, ты это определил внутри onLoad
и это неправильное, unicalo в <head>
Издайте jsfiddle и сохраняйте обновления, кроме того я помещаю здесь пример применяя утверждения
function valida_envia() {
//Definimos los caracteres permitidos en una dirección de correo electrónico
var regexp = /^[0-9a-zA-Z._.-]+\@[0-9a-zA-Z._.-]+\.[0-9a-zA-Z]+$/;
var nombre = document.getElementById('nombre');
var email = document.getElementById('email');
//Validamos un campo o área de texto, por ejemplo el campo nombre
if (nombre.value.length == 0) {
alert("Tiene que escribir su nombre");
nombre.focus();
return false;
}
if ((regexp.test(email.value) == 0) || (email.value.length = 0)) {
alert("Introduzca una dirección de email válida");
email.focus();
return false;
} else {
var c_email = true;
}
document.Formulario.submit();
return true;
}
<form name="Formulario" action="pepito123@yopmail.com" method="post">
name:
<br>
<input type="text" id="nombre" name="nombre">
<br> email:
<br>
<input type="text" id="email" name="email">
<input type="button" value="Enviar" onclick="return valida_envia();">
</form>
В случае JSFiddle, он не называется в функцию, потому что ты имеешь, так как код JS работал "onLoad". Это способствует тому, чтобы функция пошла внутри другой функции ($(document).ready(function() {})
) и Ваша область ограничилась во внутри вышеупомянутой функции. Если ты меняешь способ в "не wrap - in <head>" тогда, если он назовется в функцию valida_envia
.
Сейчас, внутри этой функции есть серия ошибок:
document.form.nombre
и document.form.email
они не являются действительными и дают ошибку, ты был бы должен использовать различную нотацию как document.getElementById("nombre")
или document.form["nombre"]
return
(тот, который есть inline в формуляре) он интерпретирует 0 "0", который не пустая цепь и следовательно - верно и будет послан формуляр. В Вашем месте возврати true или false. С этими изменениями код остался бы таким (также ты можешь видеть это в JSFiddle):
function valida_envia(e) {
//Definimos los caracteres permitidos en una dirección de correo electrónico
var regexp = /^[0-9a-zA-Z._.-]+\@[0-9a-zA-Z._.-]+\.[0-9a-zA-Z]+$/;
//Validamos un campo o área de texto, por ejemplo el campo nombre
if (document.getElementById("nombre").value.length == 0) {
alert("Tiene que escribir su nombre");
document.getElementById("nombre").focus();
return false;
}
if ((regexp.test(document.getElementById("email").value) == 0) || (document.getElementById("email").value.length = 0)) {
alert("Introduzca una dirección de email válida");
document.getElementById("email").focus();
return false;
} else {
var c_email = true;
}
return true;
}
Есть две главные проблемы: