Функцию JS не называются, послав формуляр

У меня есть формуляр, что, когда послано пламя в функцию, но не звонит в функцию 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();
}
name:

email:

2
задан 05.05.2016, 23:40
3 ответа

Если ты проверяешь пример в jsfiddle краях, который ты должен менять ему, где ты помещаешь функцию

introducir la descripción de la imagen aquí

в твоем примере, ты это определил внутри 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>
2
ответ дан 24.11.2019, 14:29

В случае JSFiddle, он не называется в функцию, потому что ты имеешь, так как код JS работал "onLoad". Это способствует тому, чтобы функция пошла внутри другой функции ($(document).ready(function() {})) и Ваша область ограничилась во внутри вышеупомянутой функции. Если ты меняешь способ в "не wrap - in <head>" тогда, если он назовется в функцию valida_envia.

Сейчас, внутри этой функции есть серия ошибок:

  • document.form.nombre и document.form.email они не являются действительными и дают ошибку, ты был бы должен использовать различную нотацию как document.getElementById("nombre") или document.form["nombre"]
  • Ты не возвращаешь 0 ó 1. Когда ты возвращаешь число, второго 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;

}
2
ответ дан 24.11.2019, 14:29

Есть две главные проблемы:

  • document у него нет свойства form, что у тебя есть, является коллекцией forms а следовательно вместо того, чтобы соглашаться на элементы формуляра с document.form.nombre, ты это мог бы делать с document.forms [0] .nombre (всякий раз когда это был уникум form документа)
  • с другой стороны, если он не преодолевает утверждение, ты был бы должен возвращать false вместо 0 и, если он отличается, был бы должен возвращать true вместо того, чтобы делать submit формуляра (эффект - тот же самый, но остается более чистым).
0
ответ дан 24.11.2019, 14:29

Теги

Похожие вопросы