entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

El evento onclick de js en php no me funciona

Hola, tengo un form en mi html, trabajo con codeigniter, y agregó un fichero .js con un código sencillo es para validar si decea eliminar el o los elementos seleccionados pero no me funciona.
Código en HTML:

$form2 =    array('name' => 'form2', 'id' => 'form2',   'class' => 'form-horizontal');
<?php echo form_open(base_url().'direccion/camino2',$form2)?>                       
     <div class="form-group" id="menu_botons" class="menu_botons">
            <input type="submit" name="delete" id="delete" value="Eliminar" onclick="pregunta()">
            <input type="submit" name="re_insert" id="re_insert" value="Re-Insertar" ... más código

incluyo mi js en mi html:

<script src="<?php echo base_url() ?>js/admin.js"></script> 

lo reconoce en el debug del navegador que uso Firefox Developer Edition
mi código js en mi fichero admin.js

function pregunta(){ 
    if (confirm('¿Estas seguro deseas eliminar los datos seleccionados?')){ 
       document.form2.submit();
    } 
} 

y cuando abró la página que le doy clic al botón Eliminar va directo a la página y no me pregunta la confirmación.
Quiero que si dan click en Aceptar se proceda a ir a la página que procesará los datos para leiminar la/s noticia/s seleccionada/s y si dan click en Cancelar que se quede en la página como si no se hubiece dado click en el botón Eliminar.
Saludos Dairon

1 Respuesta

2votos

carlossevi Puntos63540

Creo que el error está en:

<input type="submit" name="delete" id="delete" value="Eliminar" onclick="pregunta()">

Esa línea crea un input del tipo submit (botón para hacer la acción correspondiente en el formulario). Al hacer click suceden dos cosas: se ejecuta el script JS y se hace la subida del formulario (independientemente de la ejecución del JS).

Creo que podría solucionarlo con un button:

<button onclick="pregunta()">Eliminar</button>

Otra opción es utilizar el onsubmit del formulario (documentación de validación). La línea del formulario queda:

<form name="x" onsubmit="return pregunta()" method="post" action="x">

Y la función:

function pregunta(){ 
    if (!confirm('¿Estas seguro deseas eliminar los datos seleccionados?')){ 
       return false;
    }
} 

0voto

Leonardo-Tadei comentado

+1

Es mejor la opción del onsubmit del form, porque es menos intrusiva y si no hay JavaScript no se verá la confirmación pero seguirá funcionando la página

0voto

dairon comentado

Probé con la opción onsubmit="return pregunta()" y me funcionó pero como es lógico, funcionó para todos los botones dentro de mi form y necesito que solamente sea para el botón eliminar

0voto

carlossevi comentado

El código JS de tu función onsubmit puede distinguir qué input ha desencadenado la acción. Ejemplo:

function OnSubmitForm()
{
  if(document.pressed == 'Insert')
  {
    // Tu código    
  }
  else
  if(document.pressed == 'Update')
  {
    // Tu código
  }
  return true;
}

Fuente y +info: http://www.javascript-coder.com/html-form/html-form-action.phtml

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta