2012-02-21 12 views
5

próbuję ustawić kolor tła do pola tekstowego, gdy jego wartość jest większa niż 75. więc dodałem poniższy kod do słuchaczaustawienie koloru tła na ExtJS textField

listeners: { 
     beforeRender: function(e) { 
      if (someValue >= 75) { 
       e.style = " background-color: #00CC99"; 
      } 
     } 
} 

ale coś jak poniżej kiedy to czyni,

enter image description here

czy istnieje sposób, aby zielony kolor widoczny w całym polu tekstowym, a nie tylko buttom? Stwierdziłem, że nie jest wyświetlany zgodnie z przeznaczeniem ze względu na domyślny obraz tła CSS. Ale chcę zmienić css na zmianę wartości i nie pisać oddzielnych css dla tylko jednego pola tekstowego. Czy jest jakiś sposób na zrobienie tego?

Odpowiedz

6

Wystarczy pozbyć się obrazu tła:

e.style = "background-image:none;background-color:#00cc99;"; 
/* or */ 
e.style = "background:none #00cc99;"; 

Jeśli e jest DOM obiekt użycie element.style.property = 'value' zamiast:

e.style.backgroundImage = 'none'; 
e.style.backgroundColor = '#00cc99'; 
/* or */ 
e.style.background = 'none #00cc99'; 

Dla kompletności definicji zawartej w ExtJS (zgodnie z ExtJS "Form Field Types" demo):

+0

więc kładę słuchacza na pudełku, kiedy zmiana wartości po prostu uzyskuję odniesienie elementu przez funkcję zmiany i próbuję ustawić właściwość stylu tak, jak opisałeś, ale to nie działa. Czy istnieje jakaś inna metoda, której można użyć do ustawienia nowych wartości stylu? –

+0

Możesz podać [działający przykład online] (http://sscce.org/) swojego problemu i uwzględnić go w swoim pytaniu;). Użyj na przykład http://jsfiddle.net/. – Zeta

+2

Mam to, użyłem e.style do ustawienia wartości, które nie działa, więc użyłem firebug, aby zobaczyć, co faktycznie ten element ma w nim, okazuje się, że istnieje metoda o nazwie setStyle w "el" obiektu "e" . Więc zmieniłem go na e.el.setStyle ("background-image", "none"); e.el.setStyle ("background-color", "# 00cc99"); który działa idealnie. dzięki –