2012-04-27 9 views
5

Bueno, tengo este código en la vista:¿Por qué no cambia el atributo de valor de la entrada?

<input id="CI.SiteName" type="text" value="" name="@@CI.SiteName" disabled=""> 

y luego hacer algún evento que llamar a esta función:

chooseSite = function() { 
    var url = "/main/Ajax/GetSiteDetail?" + 
     "&cid=" + escape(idSite); 

    var ajx = sendAJAX(url, true); 

    ajx.onreadystatechange = function() { 
     if (ajx.readyState == 4) { 
      var result = ajx.responseText;  
      result = "TOP"; 
      document.getElementById("CI.SiteName").value = result; 
     } 
    } 
} 

en el navegador se ha cambiado a "TOP" pero cuando inspeccionar elemento con firebug, el atributo VALOR de INPUT todavía "", no modificado.

+1

¿Por qué solicitó el método getElementById()? Nunca se suponía que cambiara nada. – Bergi

Respuesta

11

El atributo value no está sincronizado con el valor real; para eso está la propiedad value.

Esto no es un problema, ya que nunca usará .getAttribute('value'), pero use la propiedad .value para acceder al valor actual.

+0

No entiendo: | –

+2

@ Mr.Rendezvous: quiere decir que el atributo HTML y la propiedad del objeto JavaScript no son lo mismo, y realmente no importa. –

+1

Eche un vistazo a http://stackoverflow.com/a/5876747/298479 - mientras está relacionado con jQuery lo explica bastante bien. – ThiefMaster

Cuestiones relacionadas