Jump to content
jcfr

Actualizar select box sem fazer refresh à página

Recommended Posts

jcfr

Boa tarde a todos,

Sou programador a pouco tempo e sempre utilizei javascript para actualizar os meus selectcs, no entanto no trabalho que estou a desenvolver isto tem de funcionar no IE8 e a forma como eu fazia não funciona no IE8.

Alguém conhece alguma forma seja em Javascript ou não de actualizar os valores de uma select box sem carregar a página novamente?

Desde já óbrigado.

Share this post


Link to post
Share on other sites
jcfr

<select id="x_bcdireito" name="x_bcdireito" onchange="
var obj =frmencomenda.x_powerdireito;
		 if (obj == null) return;
		 if (obj.options == null) return;
		 while (obj.options.length > 0) {
			 //alert(obj.options.length);
			 obj.remove(0);
		 }
		 var elSel=frmencomenda.x_powerdireito;
		 var elOptNew='';
		 var valor='';
		 var num=0;
		 for(var i=0;i<potencias_esfericas.length;i++){
			 if(potencias_esfericas[i][0]==this.value){
				 elSel=frmencomenda.x_powerdireito;
				 elOptNew=document.createElement('option');
				 //alert(potencias_esfericas[i][1]);
				 if((potencias_esfericas[i][1]*1)>0){
					 valor='+'+potencias_esfericas[i][1];
				 }else{
					 valor=potencias_esfericas[i][1];
				 }

				 elSel.options[num] = new Option(valor, valor);

					 num=num+1;
			 }

		 } " style="width:60px;">
 <?php
			 for($y=0;$y<$num_curva_base;$y++){

			 ?>
			 <option value="<?=$curvas_base[$y];?>" <?php if($y==0){$curva_base=$curvas_base[$y];?>selected="selected"<?php }?>><?=$curvas_base[$y];?></option>
			 <?php
			 }
			 ?>
		 </select>

<select id="x_diadireito" name="x_diadireito">
			 <?php
 for($y=0;$y<$num_diametro;$y++){
 ?>

			 <option value="<?=$diametros[$y];?>"><?=$diametros[$y];?></option>
			 <?php
 }
 ?>
		 </select>

é um projecto no qual entrei já quase terminado e como já tinha quase tudo directamente nos onchange's eu fiz igual embora prefira fazer em funções...

a primeira parte do código funciona bem e elimina todas as opções, a segunda em todos os browsers também e adiciona as novas opções guardadas no array, no entanto no IE8 isto não funciona...

Conhecem alguma forma de fazer isto que funcione em todos os browsers incluindo o IE da versao 8 para a frente incluindo a 8 e que não inclua carregar novamente a página?

Edited by apocsantos
geshi

Share this post


Link to post
Share on other sites
jcfr

Sim asm de qualquer forma isso não me resolve o problema, antes de o passar para o onchange tinha em funções

<script language="javascript" type="application/javascript">
function removeOptions(id) {
//alert(id);
var obj =document.getElementById(id);
if (obj == null) return;
if (obj.options == null) return;
while (obj.options.length > 0) {
 //alert(obj.options.length);
 obj.remove(0);
}
}
function addOptions(id, curva_base){
var elSel=document.getElementById(id);
var elOptNew=document.createElement('option');
var valor="";
for(var i=0;i<potencias_esfericas.length;i++){
 if(potencias_esfericas[i][0]==curva_base){
  elSel=document.getElementById(id);
  elOptNew=document.createElement('option');
  //alert(potencias_esfericas[i][1]);
  if((potencias_esfericas[i][1]*1)>0){
   valor='+'+potencias_esfericas[i][1];
  }else{
   valor=potencias_esfericas[i][1];
  }
    elOptNew.text = valor;
    elOptNew.value = valor;

    try {
   elSel.add(elOptNew, null); // standards compliant; doesn't work in IE
    }
    catch(ex) {
   elSel.add(elOptNew); // IE only
    }
 }

}
}
function actPotencia(id_curva_base, id_potencia_esferica){
removeOptions(id_potencia_esferica);
var curva_base=document.getElementById(id_curva_base).value;
addOptions(id_potencia_esferica, curva_base);

}
</script>

<select id="x_bcdireito" name="x_bcdireito" onchange="actPotencia('x_bcdireito', 'x_powerdireito'); " style="width:60px;">
    <?php
     for($y=0;$y<$num_curva_base;$y++){
     ?>
     <option value="<?=$curvas_base[$y];?>" <?php if($y==0){$curva_base=$curvas_base[$y];?>selected="selected"<?php }?>><?=$curvas_base[$y];?></option>
    <?php
    }
    ?>
    </select>

<select id="x_powerdireito" name="x_powerdireito" style="width:60px;">
    <?php
     for($y=0;$y<$i_list;$y++){
           if($potencias_esfericas[$y]['curva_base']==$curva_base){
     ?>
      <option value="<?=$potencias_esfericas[$y]['potencia_esferica'];?>"><?=$potencias_esfericas[$y]['potencia_esferica'];?></option>
      <?php
          }
      }

</select>

Funciona no IE9+ , Chrome, Firefox, Safari, Opera etc mas no IE8 e anteriores não funciona, e eu tenho de ter isto a funcionar no IE8 e mais recentes...

Edited by thoga31
GeSHi

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.