Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > не могу создать size в msie создаваемом selecte


Автор: dstorm81 29.1.2007, 12:58
в общем пишу автоподставновку для одного проектика, то есть вводишь часть слова, и появляется выбор вариантов.
Но само собой выбор вариантов должен быть виден хотябы частично, что в принципе и есть но в ослике это работать не хочет может плдскажете как эту проблему обойти
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>автоподстановка</title>
</head>
<body>
<input type="text" id="fi"/>
<div id="podst"></div>
<script type="text/javascript">
var streetArr=["1я Железнодорожная",
"2-я Железнодорожная","Волжская","Гагарина","Гастелло","Гоголя","Дачная","Декабристов","Заикина","Залесная","Засорина","Зеленая",
"Карла Маркса","Комсомольская","Космонавтов","Краснофлотская","Красный переулок","Ленина","Лиственная","Малая Красная",
"Маяковского","Мира","Мичурина","Московская","Осипенко","Паратская","Первомайская","Песчаная","Почтовая","Рогачева",
"Северная","Серова","Солнечная","Сосновая","Союзная","Татарстан","Тимирязева","Тихая","Тукая","Туктарова","Тургенева",
"Украинская","Фрунзе","Чайковского","Чкалова","Шевченко","Школьная","Энгельса","Юбилейная","Юности"];

var sp=function (id){return document.getElementById(id);}

document.onkeyup=function(e)
{
var e=e||window.event;
var E=e.target||e.srcElement;
if(E.id=="fi")
    {
    if(e.keyCode==40){try{sp("podstSel").focus()}catch(e){}}
    else{
        var m=0;
        var hndl2SEL=document.createElement("SELECT");
            hndl2SEL.id='podstSel';
            sp("podst").style.display="";
        for(var i=0;i<streetArr.length;i++)
            {
            if(streetArr[i].toLowerCase().indexOf(E.value.toLowerCase())!=-1)// поиск вхождений в lowcase
                {
                m++;
                var optionName=document.createElement("OPTION");
                var hndl2Op=hndl2SEL.appendChild(optionName);
                    hndl2Op.text=hndl2Op.value=streetArr[i];
                }
            }
            sp("podst").innerHTML='';
            sp("podst").appendChild(hndl2SEL);
            hndl2SEL.size=(m>10)?10:m;
        }
    }
if(e.keyCode==13 && E.nodeName=='SELECT'){sp("fi").value=E.value;sp("fi").focus();sp("podst").style.display="none";}
}

window.onload=function(e)
{var a_INP=document.getElementsByTagName('INPUT');for(var i=0;i<a_INP.length;i++)a_INP[i].autocomplete="off"}
</script>
</body>
</html>

или в осле это нельзя сделать.
З.Ы. если делать через иннер нтмл то все путем, просто мне надо домовский вариант, что бы мороки помешьше было

Добавлено @ 13:01 
 hndl2SEL.size= вот эта строка ослом игнорируется

Автор: Nicholas_S 29.1.2007, 13:03
осел как всегда... осел.
Сделай так:

Код

hndl2SEL=document.createElement("<SELECT size=100>");

Автор: dstorm81 29.1.2007, 13:35
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>автоподстановка</title>
</head>
<body>
<input type="text" id="fi"/>
<div id="podst"></div>
<script type="text/javascript">
var streetArr=["1я Железнодорожная",
"2-я Железнодорожная","Волжская","Гагарина","Гастелло","Гоголя","Дачная","Декабристов","Заикина","Залесная","Засорина","Зеленая",
"Карла Маркса","Комсомольская","Космонавтов","Краснофлотская","Красный переулок","Ленина","Лиственная","Малая Красная",
"Маяковского","Мира","Мичурина","Московская","Осипенко","Паратская","Первомайская","Песчаная","Почтовая","Рогачева",
"Северная","Серова","Солнечная","Сосновая","Союзная","Татарстан","Тимирязева","Тихая","Тукая","Туктарова","Тургенева",
"Украинская","Фрунзе","Чайковского","Чкалова","Шевченко","Школьная","Энгельса","Юбилейная","Юности"];

var sp=function (id){return document.getElementById(id);}

document.onkeyup=function(e)
{
var e=e||window.event;
var E=e.target||e.srcElement;
if(E.id=="fi")
    {
    if(e.keyCode==40){try{sp("podstSel").focus()}catch(e){}}
    else{
        var m=0;
        /*@cc_on @*/
        /*@if(@_jscript)
        var hndl2SEL=document.createElement("<SELECT size=10>");
        @else @*/
        var hndl2SEL=document.createElement("SELECT");
        /*@end @*/

            hndl2SEL.id='podstSel';
            sp("podst").style.display="";
        for(var i=0;i<streetArr.length;i++)
            {
            if(streetArr[i].toLowerCase().indexOf(E.value.toLowerCase())!=-1)// поиск вхождений в lowcase
                {
                m++;
                var optionName=document.createElement("OPTION");
                var hndl2Op=hndl2SEL.appendChild(optionName);
                    hndl2Op.text=hndl2Op.value=streetArr[i];
                }
            }
            sp("podst").innerHTML='';
            sp("podst").appendChild(hndl2SEL);
            hndl2SEL.size=(m>10)?10:m;
        }
    }
if(e.keyCode==13 && E.nodeName=='SELECT'){sp("fi").value=E.value;sp("fi").focus();sp("podst").style.display="none";}
}
window.onload=function(e)
{var a_INP=document.getElementsByTagName('INPUT');for(var i=0;i<a_INP.length;i++)a_INP[i].autocomplete="off"}
</script>
</body>
</html>
так работает

Автор: Nicholas_S 29.1.2007, 13:50
dstorm81, ставь что решен вопрос  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)