Foros del Web » Programando para Internet » Javascript »

Validación, comportamiento extraño

Estas en el tema de Validación, comportamiento extraño en el foro de Javascript en Foros del Web. Hola amigos, tengo un problema con una simple validación, la idea es validar q la edad_inicial no sea mayor que la edad_final, he realizado el ...
  #1 (permalink)  
Antiguo 28/11/2005, 12:56
Avatar de pablod  
Fecha de Ingreso: abril-2004
Ubicación: Santiago
Mensajes: 118
Antigüedad: 20 años
Puntos: 0
Validación, comportamiento extraño

Hola amigos, tengo un problema con una simple validación, la idea es validar q la edad_inicial no sea mayor que la edad_final, he realizado el codigo de distintas formas, esta validacion es simple, pero no se porque se comporta extraño y a veces funciona o no. Acá dejo el codigo a ver si le encuentran algún detalle.

Código:
<script>
function validar_rango_edad(edad1, edad2) {
   if(edad1 > edad2) return 1; 
   else return 0;	
}

function validar_form() {

	if( document.form1.edad_desde.options[document.form1.edad_desde.selectedIndex].value == 0 ) {
		alert("Indique la Edad desde");
		document.form1.edad_desde.focus();
		return false;
	}
	if( document.form1.edad_hasta.options[document.form1.edad_hasta.selectedIndex].value == 0 ) {
		alert("Indique la Edad hasta");
		document.form1.edad_hasta.focus();
		return false;
	}
	
	var indice1;
	var indice2;
	indice1 = document.form1.edad_desde.selectedIndex;
	indice2 = document.form1.edad_hasta.selectedIndex;
	var edades;
	edades = validar_rango_edad(document.form1.edad_desde.options[indice1].value, document.form1.edad_hasta.options[indice2].value);
	if( edades == 1 ) {
		alert("La edad desde debe ser menor que la edad hasta");
		return false;
	}
	
	return true;
}

</script>
Estos son los campos que se deben validar, son iguales solo cambia su nombre
Código:
<select name="edad_desde" class="combo_select">
        <option value="0" selected>Seleccionar</option>
        <option value="6">6</option>
        <option value="7">7</option>
        <option value="8">8</option>
        <option value="9">9</option>
        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
        <option value="13">13</option>
        <option value="14">14</option>
        <option value="15">15</option>
        <option value="16">16</option>
        <option value="17">17</option>
        <option value="18">18</option>
        <option value="19">19</option>
        <option value="20">20</option>
        <option value="21">21</option>
        <option value="22">22</option>
        <option value="23">23</option>
        <option value="24">24</option>
        <option value="25">25</option>
        <option value="26">26</option>
        <option value="27">27</option>
        <option value="28">28</option>
        <option value="29">29</option>
        <option value="30">30</option>
        <option value="31">31</option>
        <option value="32">32</option>
        <option value="33">33</option>
        <option value="34">34</option>
        <option value="35">35</option>
        <option value="36">36</option>
        <option value="37">37</option>
        <option value="38">38</option>
        <option value="39">39</option>
        <option value="40">40</option>
        <option value="41">41</option>
        <option value="42">42</option>
        <option value="43">43</option>
        <option value="44">44</option>
        <option value="45">45</option>
        <option value="46">46</option>
        <option value="47">47</option>
        <option value="48">48</option>
        <option value="49">49</option>
        <option value="50">50</option>
        <option value="51">51</option>
        <option value="52">52</option>
        <option value="53">53</option>
        <option value="54">54</option>
        <option value="55">55</option>
        <option value="56">56</option>
        <option value="57">57</option>
        <option value="58">58</option>
        <option value="59">59</option>
        <option value="60">60</option>
        <option value="61">61</option>
        <option value="62">62</option>
        <option value="63">63</option>
        <option value="64">64</option>
        <option value="65">65</option>
        <option value="66">66</option>
        <option value="67">67</option>
        <option value="68">68</option>
        <option value="69">69</option>
        <option value="70">70</option>
        <option value="71">71</option>
        <option value="72">72</option>
        <option value="73">73</option>
        <option value="74">74</option>
        <option value="75">75</option>
        <option value="76">76</option>
        <option value="77">77</option>
        <option value="78">78</option>
        <option value="79">79</option>
        <option value="80">80</option>
        <option value="81">81</option>
        <option value="82">82</option>
        <option value="83">83</option>
        <option value="84">84</option>
        <option value="85">85</option>
        <option value="86">86</option>
        <option value="87">87</option>
        <option value="88">88</option>
        <option value="89">89</option>
        <option value="90">90</option>
        <option value="91">91</option>
        <option value="92">92</option>
        <option value="93">93</option>
        <option value="94">94</option>
        <option value="95">95</option>
        <option value="96">96</option>
        <option value="97">97</option>
        <option value="98">98</option>
        <option value="99">99</option>
        <option value="100">100</option>
        <option value="101">101</option>
        <option value="102">102</option>
        <option value="103">103</option>
        <option value="104">104</option>
        <option value="105">105</option>
        <option value="106">106</option>
        <option value="107">107</option>
        <option value="108">108</option>
        <option value="109">109</option>
        <option value="110">110</option>
      </select>
Gracias de antemano.

Saludos

Pablo..----
__________________
Pablod:-)
  #2 (permalink)  
Antiguo 28/11/2005, 13:49
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Hola, pablod
No sé si servirá, pero en todo caso yo convertiría las edades en números antes de compararlas (el "value" es un texto siempre):

Código PHP:
function validar_rango_edad(edad1edad2) {
   if ( 
parseInt(edad1) > parseInt(edad2) ) return 1
   else return 
0;    

Y otro par de sugerencias para reducir tu código:

Código PHP:
<script type="text/javascript">
function 
validar_rango_edad(edad1edad2) {
   if(
edad1 edad2) return false
   else return 
true;    
}

function 
validar_form() {

[...
etc...]    
    var 
indice1;
    var 
indice2;
    
indice1 document.form1.edad_desde.selectedIndex;
    
indice2 document.form1.edad_hasta.selectedIndex;
    var 
edades;
    
edades validar_rango_edad(document.form1.edad_desde.options[indice1].valuedocument.form1.edad_hasta.options[indice2].value);
    if( !
edades ) {
        
alert("La edad desde debe ser menor que la edad hasta");
        return 
false;
    }
    
    return 
true;

Código PHP:
<select name="edad_desde" class="combo_select">
        <
option value="0" selected>Seleccionar</option>
<
script type="text/javascript">
  for (
i=6i<111i++)
  { 
document.write('<option value="' '">' '</option>')
  }
</script>
     </select> 
__________________
Angel :cool:
  #3 (permalink)  
Antiguo 28/11/2005, 14:05
Avatar de pablod  
Fecha de Ingreso: abril-2004
Ubicación: Santiago
Mensajes: 118
Antigüedad: 20 años
Puntos: 0
Muchas gracias angsanchez, al utilizar parseInt(), se ha solucionado.

También compacte el código con tu recomendación.

Saludos.

P4blo.--
__________________
Pablod:-)
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 19:29.