index.php
<?php // incluimos la clase require_once("xajax/xajax_core/xajax.inc.php"); // Creamos una instancia al objeto XAJAX: $xajax = new xajax(); function no_valido_select($sValor){ // validamos en primer lugar, // que se haya seleccionado una opcion if(empty($sValor)) return '* Debe seleccionar una opción..'; # aqui cualquier otra validacion # ... // retorna FALSE si los datos estan perfectamente validados return FALSE; } function no_valido_multi_select($arrItems){ // validamos en primer lugar, // que se haya seleccionado una opcion if(!is_array($arrItems) or count($arrItems)<2 or empty($arrItems[0])){ return '* Debe seleccionar al menos dos opciones sin incluir la primera..'; } # aqui cualquier otra validacion # ... // retorna FALSE si los datos estan perfectamente validados return FALSE; } // valida el campo pasado por parametro function FormManage($form,$sCampo){ $sCadena = $form["sel$sCampo"]; $sMsj = ''; // iniciamos el llamado a las validaciones segun sea el caso if (($sCampo=='Ciudades' and $sTempMsj=no_valido_select($sCadena)) or ($sCampo=='MultipleCiudades' and $sTempMsj=no_valido_multi_select($sCadena))){ $sMsj = $sTempMsj;// actualizamos } // creamos una nueva instancia para generar la respuesta con ajax (xajaxResponse). $objRespuesta = new xajaxResponse(); // asignamos el valor que determinara la imagen y el mensaje a mostrar por campo $sImg = (!empty($sMsj) ? 'incorrecto' : 'correcto'); // asignamos el codigo html para los mensajes $sHTMLMsj = "<div class='DivLocal'><img border='0' src='imagenes/$sImg.png' /> valor $sImg</div>"; $sHTMLMsjGlobal = "<div class='DivGlobal'><img border='0' src='imagenes/warning.png' /> $sMsj</div>"; // Actualizamos los div $objRespuesta->assign("div$sCampo",'innerHTML', $sHTMLMsj); $objRespuesta->assign('DivGlobal','innerHTML', (!(!$sMsj) ? $sHTMLMsjGlobal : '')); // retornamos el objeto return $objRespuesta; } function FormProcess($form) { // creamos una nueva instancia para generar la respuesta con ajax $objRespuesta = new xajaxResponse(); // si los campos estan correctos if(no_valido_select($form['selCiudades']) or no_valido_multi_select($form['selMultipleCiudades'])) $objRespuesta->alert('¡El formulario debe estar perfectamente validado!'); else { /* aqui iria el proceso que almacena los datos en la Base de Datos, recuerda que los datos deben de ser filtrados por seguridad script ... script .... script ..... */ /* luego de que has hecho lo debido con los datos, informamos al usuario del resultado podemos hacerlo usando un DIV o bien, un alert de JavaScript */ $objRespuesta->alert('¡Datos almacenados correctamente!'); // limpiamos los campos $ArrayCampos = array('Ciudades','MultipleCiudades'); //$NumCampos = count($ArrayCampos); for ($i=0; $i<2; $i++)//no hace falta usar count puesto que sabemos cuantos campos con.. { $objRespuesta ->clear("sel$ArrayCampos[$i]",'value') //limpiando los txt ->clear("div$ArrayCampos[$i]",'innerHTML'); //limpiando los div } } return $objRespuesta; } $xajax->registerFunction('FormManage'); // gestiona las validaciones del formulario $xajax->registerFunction('FormProcess'); // procesa los datos del formulario //Le indicamos al objeto xajax que procese la peticion / el pedido $xajax->processRequest(); ?> <html> <head> <title>Validando select's con XAJAX</title> <link href="estilo.css" rel="stylesheet" /> <?php //se le dice que Incluya el JavaScript generado desde XAJAX $xajax->printJavascript('xajax/'); ?> </head> <body> <form name='form1' id='form1' action='javascript:void(null);' onsubmit="xajax_FormProcess(xajax.getFormValues('form1'))"> <div class='DivTable'> <table border='0'> <tr><td colspan='3'><div id='DivGlobal'></div><hr/></td></tr> <tr> <td align='right' width='220px' class='Campos'>Ciudades:</td> <td width='200px'> <select name="selCiudades" id="selCiudades" onChange="xajax_FormManage(xajax.getFormValues('form1'),'Ciudades')"> <option value="">-- seleccione una ciudad--</option> <option value="1">Barcelona</option> <option value="2">Barquisimeto</option> <option value="3">Caracas</option> <option value="4">Maracaibo</option> <option value="5">Los teques</option> <option value="6">Valencia</option> </select> </td> <td align='left' width='300px'><div id='divCiudades'></div></td> </tr> <tr> <td align='right' width='220px' class='Campos'>Multiple Ciudades:</td> <td width='200px'> <select name="selMultipleCiudades[]" id="selMultipleCiudades" multiple="multiple" onChange="xajax_FormManage(xajax.getFormValues('form1'),'MultipleCiudades')"> <option value="">-- seleccione varias ciudades--</option> <option value="1">Barcelona</option> <option value="2">Barquisimeto</option> <option value="3">Caracas</option> <option value="4">Maracaibo</option> <option value="5">Los teques</option> <option value="6">Valencia</option> </select> </td> <td align='left' width='300px'><div id='divMultipleCiudades'></div></td> </tr> <tr> <td align='center' colspan='3'><hr/> <input type='submit' tabindex='8' value='Guardar los datos'></td> </tr> </table> </div> </form> </body> </html>
Los estilos y demás archivos requeridos, son los mismos usados en el primer ejemplo (base)
- Los comentarios están siendo moderados y serán publicados en la brevedad posible.