Estoy haciendo un software de encuestas interactivo y tengo un problema al capturar las variables de unos radio buttons, el problema es que los radio button estan ocultos y el usuario solo interactua con unos cuadros que los debe arrastrar a otro cuadro donde se encuentra el radio button oculto por un cuadro.
Es un efecto muy novedoso, pero tengo problemas para capturar las variables de ese radio button y luego guardarlas en la bd por medio de un script php.
Publico el codigo
Solo debes copiar y pegar en front page o en dereamweaver.
Espero su colaboracion, la idea es que cuando den clic en siguiente obtener el valor de las opciones del radio button estan ocultas
Es mucho codigo lo subi a rapidshare para que lo bajen y lo miren y me ayuden
Código PHP:
<script type="text/javascript" language="javascript">
var comprobaciones = new Array();
function Submit(param) {
// Comprobar todo
var i = 0;
var testOK = true;
while(testOK && i < comprobaciones.length) {
testOK = comprobaciones[i]();
i++;
}
if (!testOK) return;
// Hacer las acciones despues de comprobar que todo esta bien
if(param=="PaginaAnterior") {
document.survey.boton.value="<<";
document.survey.submit();
}
else if(param=="NoEnviar") {
document.survey.boton.value="Cancelar";
window.location.href='../vistas/Redireccion.jsp';
}
else if(param=="EnviarFalso") {
evalResult=validarRestricciones();
if (evalResult==null){
document.survey.boton.value="Cancelar";
window.location.href='../vistas/Redireccion.jsp';
} else {
alert(evalResult);
}
}
else if(param=="Enviar") {
evalResult=validarRestricciones();
if (evalResult==null) {
document.survey.accion.value="GrabarRespuestas";
document.survey.boton.value="Enviar";
document.survey.submit();
} else
alert(evalResult);
} else if(param=="Interrumpir") {
document.survey.accion.value="InterrumpirEncuesta";
document.survey.submit();
} else if(param=="PaginaSiguiente") {
evalResult=validarRestricciones();
if (evalResult==null) {
document.survey.accion.value="GrabarRespuestas";
document.survey.boton.value=">>";
document.survey.submit();
}
else alert(evalResult);
}
}
function validarRestricciones(){
result=null;
if(document.getElementById('origen').empty()){
for(i=1;i<=col;i++){
var vector_respuestas=document.getElementById('receptor'+i).getElementsByTagName('DIV');
var j=0;
while(j<vector_respuestas.length){
var respuesta=vector_respuestas[j].id.substring(7);
document.survey['RespMatrizSR'+etiq+'.'+respuesta+'Fila'+respuesta].value=i;
j++;
}
}
}
else{result="Faltan opciones por completar";}
return result;
}
function comprobarPreguntaNumerica(pNumerica, maximo, minimo, limitacionMaxMin, entero){
//en el caso de limitacion por maximo y minimo, los parametros
//maximo y minimo contienen el numero maximo y el minimo
//en el caso de limitacion por numero de digitos, el parametro
//maximo contiene el numero maximo de digitos de la parte entera
//minimo contiene el numero maximo de digito de la parte decimal
if(pNumerica.value!=""){
if(esNumero(pNumerica)){
if (comprobacionEnteroDecimal(pNumerica, entero)){
if(limitacionMaxMin){
return comprobarMaxMin(pNumerica, maximo, minimo);
}
else{
return comprobarRangos(pNumerica, maximo, minimo, entero);
}
}
}
return false;
}
return true;
}
function chequeaMCMRFinal(element, elementPlus, textoPlus) {
var marcado = document.getElementById(element).checked;
var s = document.getElementById(elementPlus).value.length;
if(s==0 && marcado==true) {
alert('Para poder escoger la opci\u00F3n de "' + textoPlus + '" hay que marcar la opci\u00F3n e insertar alg\u00FAn valor en el campo de texto')
return false;
}
else {
return true;
}
}
function esNumero(parametro){
if (!esNumeroDecimal(parametro.value)){
alert('El valor '+parametro.value+' debe ser num\u00E9rico, y el simbolo decimal, si lo lleva, debe ser un punto.');
parametro.focus();
return false;
}
return true;
}
//
//
//
function comprobacionEnteroDecimal(pNumerica, entero){
numero=pNumerica.value;
if (entero){
if (!esNumeroNatural(numero)){
numero=numero.substring(1,numero.length);
if (!esNumeroNatural(numero)){
alert('El n\u00FAmero debe ser un entero');
pNumerica.focus();
return false;
}
return true;
}
return true;
}
return true;
}
//
//
//
function comprobarMaxMin(pNumerica, maximo, minimo){
if (pNumerica.value>maximo){
alert('El valor m\u00E1ximo es: ' + maximo);
pNumerica.focus();
return false;
}
else if(pNumerica.value < minimo){
alert('El valor m\u00EDnimo es: ' + minimo);
pNumerica.focus();
return false;
}
return true;
}
function comprobarRangos(pNumerica, enteros, decimales, entero){
numero=pNumerica.value;
if (!entero){
contadorEnteros=0;
contadorDecimales=0;
encontradaComa=false;
for(i=0;i < numero.length;i++){
if(numero.charAt(i)=='.'){
encontradaComa=true;
}
else {
if(!encontradaComa){
if (!(numero.charAt(i)=='-')){
contadorEnteros++;
}
}
else{
contadorDecimales++;
}
}
}
if (contadorEnteros>enteros || contadorDecimales>decimales){
alert('N\u00FAmero m\u00E1ximo d\u00EDgitos enteros=' + enteros + ' N\u00FAmero m\u00E1ximo d\u00EDgitos decimales=' + decimales);
pNumerica.focus();
return false;
}
}
return true;
}
function sincronizarAnyosMeses(fuente, chequeo){
// Esta funcion espera dos COMBOBOXES, si fuente.value = "", entonces
// chequeo.value=0, pero solo en caso que chequeo.value sea tambien ""
if ((fuente.selectedIndex>0) && (chequeo.selectedIndex==0)){
chequeo.selectedIndex=1;
}
else
if ((fuente.selectedIndex==0) && (chequeo.selectedIndex>0)){
chequeo.selectedIndex=0;
}
return true;
}
function comprobacionNoVacioMCSRPLUS(element, elementPlus, textoPlus){
for (i=0;i < element.length;i++){
if (element[i].value=='0' && element[i].checked){
if(elementPlus.value=='' || (!esNoCadenaEspacios(elementPlus.value))){
mensaje='Para poder escoger la opci\u00F3n de "' + textoPlus + '" hay que marcar la opci\u00F3n e insertar alg\u00FAn valor en el campo de texto';
alert(mensaje);
element[i].checked=false;
return false;
}
}
}
return true;
}
function comprobacionNoVacioMCSRPLUSDropDown(element, elementPlus, textoPlus){
if (element[element.selectedIndex].value=='0'){
if(elementPlus.value=='' || (!esNoCadenaEspacios(elementPlus.value))){
mensaje='Para poder escoger la opci\u00F3n de "' + textoPlus + '" hay que marcar la opci\u00F3n e insertar alg\u00FAn valor en el campo de texto';
alert(mensaje);
element.selectedIndex=0;
return false;
}
}
return true;
}
function comprobacionSeleccionOtrosMCSRPLUS(element, elementPlus, textoPlus){
for (i=0;i < element.length;i++){
if (element[i].value=='0' ){
if(!elementPlus.value==''){
element[i].checked=true;
}
}
}
return true;
}
function comprobacionSeleccionOtrosMCSRPLUSDropDown(element, elementPlus, textoPlus){
for (i=0;i < element.length;i++){
if (element[i].value=='0' ){
if(!elementPlus.value==''){
element.selectedIndex=i;
}
}
}
return true;
}
function chequeaMCMROpcionPlusCambiandoCheckbox(element, elementPlus){
var marcado = document.getElementById(element).checked;
var plus = document.getElementById(elementPlus);
if(marcado)
plus.focus();
else
plus.value='';
return true;
}
function chequeaMCMROpcionPlusCambiandoCampo(element, elementPlus){
var s = document.getElementById(elementPlus).value.length;
document.getElementById(element).checked=(s>0);
return true;
}
function reseteaFormulario(){
if(confirm('\u00BFEst\u00E1 seguro que desea borrar todas las respuestas de esta p\u00E1gina? ')) {
for (i=0;i < document.forms[0].length;i++){
if (document.forms[0].elements[i].type=="radio")document.forms[0].elements[i].checked=false;
else if (document.forms[0].elements[i].type=="text")document.forms[0].elements[i].value='';
else if (document.forms[0].elements[i].type=="textarea")document.forms[0].elements[i].value='';
else if (document.forms[0].elements[i].type=="checkbox")document.forms[0].elements[i].checked=false;
else if (document.forms[0].elements[i].type=="select-one")document.forms[0].elements[i].selectedIndex=0;
}
}
}
contadorKeepAlive = 72; // 72 * 10 min = 12 h
function keepalive() {
if (document.images && contadorKeepAlive > 0) {
img1 = new Image();
img1.src = "front.jsp?accion=KeepAlive&random="+ new Date().getHours() +""+ new Date().getMinutes();
contadorKeepAlive --;
}
}
setInterval('keepalive()', 10*60*1000); // 10 minutos
</SCRIPT>