Autor Zpráva
bob99
Profil
Zdravím,
mám tento kód a potřeboval bych aby se po kliknutí selectbox rozbalil. Jde to?

<!--[if lt IE 9]>
<script>
     $(function() {
          var el;
          $("select.fix-me") 
          .each(function() {
               el = $(this);
               el.data("origWidth", el.outerWidth()) // IE 8 will take padding on selects
          })
          .focus(function(){
               $(this).css("width", "auto");
          })
          .bind("blur change", function(){
               el = $(this);
               el.css("width", el.data("origWidth"));
          });
     });
</script>
<![endif]-->


<select class="fix-me" onChange="getCode('include/fkps_suggest1.php?code='+this.value)" name="" id="cur_name" style="width: 220px;" size="1" tabindex="">
                                      
_es
Profil
bob99:
aby se po kliknutí selectbox rozbalil
Ako rozbalil? Veď na to predsa slúži aj bez hocijakého JS, stačí mu dať len vhodný atribút size: Formuláře » select
bob99
Profil
myslel jsem rozbaleni po kliknutí na něm, přes size to nejde...
_es
Profil
bob99:
myslel jsem rozbaleni po kliknutí na něm
No však tak sa predsa správa normálny HTML prvok select.

přes size to nejde...
Nejde? A aj bez size, máš to spomenuté aj v tom článku, ako sa to správa pri size=1 a pri neuvedenom atribúte size.
bob99
Profil
Ano normální ano, ale ne tenhle upravený přes javascript. Zkoušel jste to v IE?
_es
Profil
bob99:
ne tenhle upravený přes javascript
No tak prečo tam ten JS dávaš? Aký, ako upravený? Dal si tu len nejaký vytrhnutý kus kódu, z toho ti nikto nič neporadí.

Zkoušel jste to v IE?
Čo som mal skúsiť a ako?
bob99
Profil
.. no přece ten kód v javascriptu doplněný o select...
<select  class="fix-me" name="" style="width: 220px;">
  <option value='1'>1</option>
  <option value='2'>2</option>
  <option value='3'>3</option>
</select>
_es
Profil
bob99:
.. no přece ten kód v javascriptu doplněný o select...
V IE8 mi to normálne „rozbaliť “ide.
bob99
Profil
..ale až když kliknete podruhý ne? První klik obnoví defaultní šířku selectboxu, ale nerozbalí ho.
_es
Profil
bob99:
No a odkiaľ si ten kód zobral? Prečo sa neinformuješ tam? Alebo, na čo tam ten kód špeciálne len pre IE vôbec je? Daj ho preč a máš snáď po probléme.
bob99
Profil
Zkouším jsfiddle.net, ale mám zablokovaný html pole. Jak to tam dostanu?


Ten kód tam je proto, že IE pracuje nesprávně se stylem width u selectboxu. Pokud je text širší než selectbox po rozbalení by měl být vidět celý, ale to se nestane, proto ten JS, který to řeší.
Tu ukázku jsem špatně upravil, v polích <option> musí být delší text než je šířka <select> nastavená přes styl...
_es
Profil
bob99:
Jak to tam dostanu?
Normálne klikneš a píšeš - ľavá horná časť.
bob99
Profil
_es:
Normálne klikneš a píšeš - ľavá horná časť.
No to nejde a i ve volbě "panels" mám HTML disablovaný


Tak ještě oprava kódu:

<script>
function getXMLHTTP() { 
     var xmlhttp=false;
     try {
          xmlhttp=new XMLHttpRequest();
     }
     catch(e) {
          try {
              xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
          }
          catch(e) {
               try {
                    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
               }
               catch(e1) {
                    xmlhttp=false;
               }
          }
     }    
     return xmlhttp;
}

function getCode(strURL) {
     var req = getXMLHTTP();
     if (req) {
          //function to be called when state is changed
          req.onreadystatechange = function() {
               //when state is completed i.e 4
               if (req.readyState == 4) {
                    // only if http status is "OK"
                    if (req.status == 200) {
                         document.getElementById('cur_code').value=req.responseText;
                    } else {
                         alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                    }
               }
          } 
          req.open("GET", strURL, true);
          req.send(null);
     }
}
function getName(strURL) {
     var req = getXMLHTTP();
     if (req) {
          //function to be called when state is changed
          req.onreadystatechange = function() {
               //when state is completed i.e 4
               if (req.readyState == 4) {
                    // only if http status is "OK"
                    if (req.status == 200) {
                         document.getElementById('cur_name').value=req.responseText;
                    } else {
                         alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                    }
               }
          } 
          req.open("GET", strURL, true);
          req.send(null);
     }
}
</script>

<!--[if lt IE 9]>
<script>
     $(function() {
          var el;
          $("select.fix-me") 
          .each(function() {
               el = $(this);
               el.data("origWidth", el.outerWidth()) // IE 8 will take padding on selects
          })
          .focus(function(){
               $(this).css("width", "auto");
          })
          .bind("blur change", function(){
               el = $(this);
               el.css("width", el.data("origWidth"));
          });
     });
</script>
<![endif]-->

<select  class="fix-me" id="cur_name" name="" style="width: 20px;">
  <option value='1'>1 ndcn dcij odj cij ajaos j</option>
  <option value='2'>2</option>
  <option value='3'>3 osc oko kpcakposak coskc paokc poaskc akc</option>
</select>

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: