Как установить фокус на выпадающий список, используя javascript, php - PullRequest
0 голосов
/ 21 февраля 2012

Я не могу установить фокус на мою php-страницу dc-test.php (это страница frames : topFrame и botFrame), в которой есть 2 выпадающих списков и являются зависимыми. Эти значения раскрывающихся списков заполняются из таблицы. Невозможно установить фокус для первого раскрывающегося списка и позже после перезагрузки для второго зависимого раскрывающегося списка. Пожалуйста, смотрите мой код ниже, нужна ваша помощь! Извините, если я повторяю этот вопрос на этом форуме, потому что я не смог найти правильный ответ.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html>
    <head>
    <SCRIPT language=JavaScript>
    function reload(form)
    {
    var val=form.cat.options[form.cat.options.selectedIndex].value;
    self.location='dc-test.php?cat=' + val ;
    }

    function firstfield()
    {
    document.topFrame.cat.focus();
    }
    </script>
    </head>

    <body onLoad="firstfield();">

    <?php
    $dbservertype='mysql';
    $servername='localhost';
    $dbusername='aaa';
    $dbpassword='234!@';
    $dbname='test';

    connecttodb($servername,$dbname,$dbusername,$dbpassword);
    function connecttodb($servername,$dbname,$dbuser,$dbpassword)
    {
    global $link;
    $link=mysql_connect ("$servername","$dbuser","$dbpassword");
    if(!$link){die("Could not connect to MySQL");}
    mysql_select_db("$dbname",$link) or die ("could not open db".mysql_error());
    }
    // End of DB connection

    @$cat=$_GET['cat'];
    if(strlen($cat) > 0 and !is_numeric($cat)){ 
    echo "Data Error";
    exit;
    }


    $quer2=mysql_query("SELECT DISTINCT Ac_desc, Ac_code FROM ACMAST order by Ac_desc");


    /////// Second drop down list we will check if category is selected else we will display all the subcategory/////
    if(isset($cat) and strlen($cat) > 0){
    $quer=mysql_query("SELECT DISTINCT Add1 FROM ACMAST where Ac_code=$cat order by   Add1");
    }

    echo "<form name='f1'>";
    echo "<table width='100%' height='39'  border='0' cellpadding='2' cellspacing='0'>";
    echo "  <tr>";
    echo "    <td width='12%'>.</td>";
    echo "    <td width='7%'><span class='sty1'> Customer</span></td>";
    echo "    <td width='27%'><select name='cat' onchange=\"reload(this.form);        showUser(this.value);\">
    <option value=''>Select Name</option>";
    while($noticia2 = mysql_fetch_array($quer2)) {
    if($noticia2['Ac_code']==@$cat){echo "<option selected value='$noticia2[Ac_code]'>$noticia2[Ac_desc]</option>"."<BR>";}
    else{echo  "<option value='$noticia2[Ac_code]'>$noticia2[Ac_desc]</option>";}
    }
    echo "</select>";

    echo "</td>";
    echo "    <td width='6%'><span class='sty1'>Address</span></td>";
    echo "    <td width='48%'> </span><select name='subcat'>";
    while($noticia = mysql_fetch_array($quer)) {
    echo  "<option value='$noticia[Add1]'>$noticia[Add1]</option>";
    }
    echo "</select>";
    echo "</td>";
    echo "  </tr>";
    echo "</table>";
    ?>
    </body>        
    </html>

1 Ответ

0 голосов
/ 23 февраля 2012

Здесь topFrame полностью находится вне области действия:

function firstfield()
{
document.topFrame.cat.focus();
}

Сделайте это вместо:

Присвойте полю формы идентификатор:

echo "    <td width='27%'><select name='cat' id='cat' onchange=\"reload(this.form); showUser(this.value);\">

ИзменитьПервое поле к этому:

function firstfield()
{
document.getElementById('cat').focus();
}

И, на несвязанной ноте: упростите свою жизнь и начните использовать jQuery.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...