Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Codigo JS no rellena form si existe otro lineas antes

Estas en el tema de Codigo JS no rellena form si existe otro lineas antes en el foro de Javascript en Foros del Web. Hola compañeros! Antetodo, como siempre, os agradezco cualquier contestación. No domino para nada el código JS y me encuentro con un problema en el que ...
  #1 (permalink)  
Antiguo 11/07/2014, 06:39
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Codigo JS no rellena form si existe otro lineas antes

Hola compañeros! Antetodo, como siempre, os agradezco cualquier contestación.

No domino para nada el código JS y me encuentro con un problema en el que no he encontrado información para solucionarlo.
Es problema en cuestión es que dispongo de un formulario conversor de unidades, si pego todo el código en un archivo en blanco, funciona perfectamente devolviendo a cada input el valor correspondiente, ahora lo intento insertar en mi código, no devuelve los valores, es decir los input quedan vacíos, el formulario queda obsoleto.

Tras toda la mañana dando palos de ciego y pensando que se trataría de un conflicto entre Frameworks, me he dado cuenta que se trata de un pequeño buscador que tengo lineas antes, es decir que si quito el buscador, funciona perfectamente, si lo dejo, el conversor queda obsoleto. No tendría problema en quitar el buscador y colocarlo lineas más atrás dándole un
Código HTML:
position:absolute;
y con un poco de css dejándolo en el lugar que ocupa ahora, pero debería hacer eso con todos los formularios que quiera insertar antes del conversor y eso lo considero insano para mi mismo.

Por lo tanto me gustaría que me ayudaseis a encontrar el problema en el código js.
El código en cuestión es el siguiente:
Código HTML:
Ver original
  1. <div class="conversor">
  2.  
  3. <script type="text/javascript">
  4. function convertform(form){
  5.     var firstvalue = 0;
  6.     for (var i = 1; i <= form.count; i++) {
  7.  
  8.       if (form.elements[i].value != null && form.elements[i].value.length != 0) {
  9.   if (i == 1 && form.elements[2].value != "") return false;
  10.   firstvalue = form.elements[i].value / form.elements[i].factor;
  11.   break;
  12.       }
  13.    }
  14.    if (firstvalue == 0) {
  15.       clearform(form);
  16.       return false;
  17.    }
  18.    for (var i = 1; i <= form.count; i++)
  19.       form.elements[i].value = formatvalue((firstvalue * form.elements[i].factor), form.rsize);
  20.    return true;
  21. }
  22. function converttempform(form){
  23.    var firstvalue = 0;
  24.  
  25.     if (form.elements[1].value != null && form.elements[1].value.length != 0) {
  26.   form.elements[2].value = (Math.round((100/(212-32) * (form.elements[1].value - 32))*100))/100;
  27.   return true;
  28.    }
  29.  
  30.     if (form.elements[2].value != null && form.elements[2].value.length != 0) {
  31.   form.elements[1].value = (Math.round(((212-32)/100 * form.elements[2].value + 32)*100))/100;
  32.   return true;
  33.    }
  34. }
  35. function formatvalue(input, rsize) {
  36.   var invalid = "**************************";
  37.   var nines = "999999999999999999999999";
  38.   var strin = "" + input;
  39.   var fltin = parseFloat(strin);
  40.   if (strin.length <= rsize) return strin;
  41.   if (strin.indexOf("e") != -1 ||
  42.       fltin > parseFloat(nines.substring(0,rsize)+".4"))
  43.       return invalid.substring(0, rsize);
  44.    var rounded = "" + (fltin + (fltin - parseFloat(strin.substring(0, rsize))));
  45.    return rounded.substring(0, rsize);
  46. }
  47. function resetform(form) {
  48.     clearform(form);
  49.     form.elements[1].value = 1;
  50.     convertform(form);
  51.     return true;
  52. }
  53. function resettempform(form) {
  54.     cleartempform(form);
  55.     form.elements[1].value = 212;
  56.     converttempform(form);
  57.     return true;
  58. }
  59. function clearform(form) {
  60.     for (var i = 1; i <= form.count; i++) form.elements[i].value = "";
  61.    return true;
  62. }
  63. function cleartempform(form) {
  64.    for (var i = 1; i <= form.count; i++) form.elements[i].value = "";
  65.    return true;
  66. }
  67. <!-- Conversor de medidas de volumen -->
  68. <h2>Conversor de medidas de volumen</h2>
  69. <form name="volumen" id="volumen">
  70.  <input type="button" value="Calibrate" onclick="resetform(this.form)" style="DISPLAY: none">
  71.  <div class="Alineando_divs_conversor"><label>tsp</label><input name="val1" class="converterBox" onfocus="clearform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  72.  <div class="Alineando_divs_conversor"><label>tbsp</label><input name="val2" class="converterBox" onfocus="clearform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  73.  <div class="Alineando_divs_conversor"><label>cups</label><input name="val3" class="converterBox" onfocus="clearform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  74.  <div class="Alineando_divs_conversor"><label>fl oz</label><input name="val4" class="converterBox" onfocus="clearform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  75.  <div class="Alineando_divs_conversor"><label>ml</label><input name="val5" class="converterBox" onfocus="clearform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  76.  <div class="Alineando_divs_conversor"><label>litros</label><input name="val6" class="converterBox" onfocus="clearform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  77.  <div class="clear"></div><!--Salto de linea-->
  78.  <div class="Alineando_divs_calcular"><input type="button" value="Calcular" onclick="convertform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  79. </form>
  80. <div class="clear"></div><!--Salto de linea-->
  81. <script type="text/javascript">
  82. document.forms[0].count = 6;
  83. document.forms[0].rsize = 5;
  84. document.forms[0].val1.factor = 0.2028841; // ml a tsp
  85. document.forms[0].val2.factor = 0.06762805; // ml a tbsp
  86. document.forms[0].val3.factor = 0.004226753; // ml a cups
  87. document.forms[0].val4.factor = 0.03381402; // ml a oz
  88. document.forms[0].val5.factor = 1; // ml a ml
  89. document.forms[0].val6.factor = 0.001; // ml a litros
  90. <!-- Conversor de medidas de peso -->
  91. <h2>Conversor de medidas de peso</h2><br>
  92. <form name="peso" id="peso">
  93.  <input type="button" value="Calibrate" onclick="resetform(this.form)" style="DISPLAY: none">
  94.  <div class="Alineando_divs_conversor"><label>oz</label><input name="val1" class="converterBox" onfocus="clearform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  95.  <div class="Alineando_divs_conversor"><label>pounds</label><input name="val2" class="converterBox" onfocus="clearform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  96.  <div class="Alineando_divs_conversor"><label>gr</label><input name="val3" class="converterBox" onfocus="clearform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  97.  <div class="Alineando_divs_conversor"><label>kg</label><input name="val4" class="converterBox" onfocus="clearform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  98.  <div class="clear"></div><!--Salto de linea-->
  99.  <div class="Alineando_divs_calcular"><input type="button" value="Calcular" onclick="convertform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  100. </form>
  101. <div class="clear"></div><!--Salto de linea-->
  102. <script type="text/javascript">
  103. document.forms[1].count = 4;
  104. document.forms[1].rsize = 5;
  105. document.forms[1].val1.factor = 1;
  106. document.forms[1].val2.factor = .0625;
  107. document.forms[1].val3.factor = 28.349523;
  108. document.forms[1].val4.factor = .028349523;
  109. <!-- Conversor de medidas de temperatura -->
  110. <h2>Conversor de temperatura</h2><br>
  111. <form name="temperatura" id="temperatura">
  112.  <input type="button" value="Calibrate" onclick="resettempform(this.form)" style="DISPLAY: none">
  113.  <div class="Alineando_divs_conversor"><label>° F</label><input name="val1" class="converterBox" onfocus="clearform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  114.  <div class="Alineando_divs_conversor"><label>° C</label><input name="val2" class="converterBox" onfocus="clearform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  115.  <div class="clear"></div><!--Salto de linea-->
  116.  <div class="Alineando_divs_calcular"><input type="button" value="Calcular" onclick="converttempform(this.form)"></div><!-- Fin .Alineando_divs_conversor -->
  117. </form>
  118. <div class="clear"></div><!--Salto de linea-->
  119. <script type="text/javascript">
  120. document.forms[3].count = 2;
  121. document.forms[3].rsize = 5;
  122. </div><!-- Fin .conversor -->

Muchísimas gracias como siempre por estar al otro lado ayudando y aconsejando!
Saludos! ;)
  #2 (permalink)  
Antiguo 11/07/2014, 11:37
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Codigo JS no rellena form si existe otro lineas antes

SOLUCIONADO!!
No había caído que tenia que ordenar el document.forms[] según el orden de formulario en la web. Por lo tanto el buscador sería document.forms[0], y los formularios del conversor serian document.forms[1], document.forms[2] y document.forms[3].

Saludos! ;)

Etiquetas: formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:50.