根据select标签中的选择自动填充表单中的字段(下拉菜单)

时间:2012-11-05 13:17:20

标签: php javascript html mysql parameter-passing

我有一个带有select标签的表单;从表格字段的下拉列表中选择一个项目应该相应地填充。注意所有表单数据都来自mysql数据库。以下是我的代码:

    <script language="javascript" type="text/javascript">
            function populateData($id)
            {
                alert('in populateData');
                y = document.getElementById("selectCard");
                document.getElementById("to_address").value = to_address[y.selectedIndex];
                document.getElementById("subject").value = subject[y.selectedIndex];
                document.getElementById("email_content").value = email_content[y.selectedIndex];
            }
    </script>
    <body>
        <?php
            mysql_connect("localhost", "someUser", "password") or die("Connection Failed");
            mysql_select_db("mns")or die("Connection Failed");
            $query = "SELECT * FROM table";
            $result = mysql_query($query);
        ?>              
        <select id="selectCard" class="dropdown" onchange="populateData($id)">
            <?php
                while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
            ?>  
            <option value="<?php echo $line['source_name'];?>"> <?php echo $line['source_name'];?>
            <?php
                $id = $line['source_id'];           
                $source_name = $line['source_name'];
                $source_email = $line['source_email'];
                $phone_no = $line['source_id'];
                $disteller_function = $line['disteller_function'];
                }
            ?>
        </select>               
        <P><INPUT ID="to_address" TYPE="TEXT" NAME="to_address" SIZE="25"></P>    
        <P><INPUT ID="subject" TYPE="TEXT" NAME="subject" SIZE="25"></P>         
        <P><INPUT ID="email_content" TYPE="TEXT" NAME="email_content" SIZE="500"></P>         
        <P><INPUT TYPE="SUBMIT" VALUE="Submit" NAME="B1"></P>                       
    </body>

当传递'$ id'作为参数时,'populateData($ id)'函数没有被调用。当我删除参数代码有效但我在其余的表单字段中得到'undefined'。

非常感谢任何帮助。

Nanashi

2 个答案:

答案 0 :(得分:2)

首先,将参数$ id传递给populateData()似乎很奇怪,因为你没有在该函数内的任何地方使用它。也许你应该重新检查你的代码,看看它是否符合你的设计,你真正想做什么以及应该如何做。

你的调用不起作用的原因是PHP变量必须以$开头,但Javascript变量不能,最重要的是:你不能只在客户端引用服务器端PHP脚本变量Javascript代码。您需要让PHP服务器端脚本在用户浏览器将接收的HTML + Javascript代码的函数调用上回显(输出)PHP脚本变量$id的值作为参数id。运行客户端(如果$id是一个数字,并且您想将其作为数值传递给populateData()),则可以在没有单引号的情况下完成。

只需从函数声明中的参数$id中删除$,并将其设置在单引号内的PHP标记之间,以将其作为调用HTML输出的函数的字符串参数进行回显:

function populateData(id){
...
}
...
<select id="selectCard" class="dropdown" onchange="populateData('<?php echo $id; ?>')">

此外,我建议您使用浏览器中打开的Javascript控制台进行测试(即Web开发人员 - > Web控制台或Firefox中的CTRL + SHIFT + K),这可以帮助您即时跟踪此类错误。

答案 1 :(得分:0)

@elcodedocle,首先感谢您对此进行调查。虽然上面的解决方案对我不起作用,但是按照以下方式完成了它,

function populateData(id){
...
}
...
<select id="selectCard" class="dropdown" onchange="populateData(this.value)">

将所有参数附加到值标记。而你是对的,不能将php变量传递给javascript函数。

再次感谢,

Nanashi

相关问题