【问题标题】:php, html combobox and textfieldphp、html 组合框和文本字段
【发布时间】:2011-06-18 14:07:33
【问题描述】:

我做了一个简单的应用程序,它有一个组合框,它加载了数据库值和一个文本字段,它应该显示与组合框选择相关的文本。 姓名 编号 号码 1 1234 编号2 2345 编号2 5678 number3 2212

所以组合框的值将是 number1、number2、number3。当用户选择 number1 时,我必须使用 1234 加载文本字段值,如果选择 number2 则为 2345,5678。

下面是我从数据库中检索的代码......但问题是只有当我按下回车键而不是点击提交按钮时才会加载值......

<head>
    <title>Sample Numbers</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body >
    <?php
    $dbname = 'sample_db';
    $db_user = 'xxx';
    $db_pass = 'xxx';
    $host = 'localhost';
    $conn = mysql_connect($host, $db_user, $db_pass);
    mysql_select_db($dbname);
    $query = "select distinct Name from numbers";
    $result = mysql_query($query, $conn) or die(mysql_error());
    ?>
    <center>
        <form name=callsubm>
            <table>
                <?php
                if ($result) {
                ?>
                    <tr>
                        <td>Group Name:</td>
                        <td><select name="Name" id="Name" onchange="onComboChange();">
                        <?php
                            while ($row = mysql_fetch_assoc($result)) {
                                echo '<option value="' . $row['Name'] . '">' . $row['Name'] . '</option>';
                            }
                         }
                            ?>
                        </select>
                        <?php
                        if (isset($_GET['Name'])) {
                            $array = array();
                            $query = "select Number from numbers where Name='" . $_GET['Name'] . "'";
                            $result = mysql_query($query, $conn) or die(mysql_error());
                            $i = 0;
                            if ($result) {
                                while ($row = mysql_fetch_assoc($result)) {
                                    $array[] = $row['Number'];
                                    $i++;
                                }
                            }
                            $total_numbers = implode(',', $array);
                        }
                        ?>
                        <script type="text/javascript">
                            function showValues() {
                                var a=new Array();
           <?php
                                  for ($i = 0; $i < count($array); $i++) {
                                       echo "a[$i]='" . $array[$i] . "';\n";
                                  }
    ?>
                                  alert(a.join());
                                  document.getElementById("inTxt").value=a.join();
                            }
                        </script>
                    </td>
                </tr>
                <tr>
                    <td>Numbers :</td>
                    <td ><input name=inTxt id=inTxt type="text" size="15"></td>
                    <td><input type="button" id="callBtn" name="callBtn" value="submit" onclick="showValues()" ></td>
                </tr>
            </table>
        </form>
    </center>
    <script type="text/javascript">
        function onComboChange() {
         groupName=document.getElementById("Name").value;
         alert("Selected Group:" + groupName);
    }
    </script>
</body>

如何解决这个问题?

提前致谢

【问题讨论】:

  • 是的,如果答案对您有用,请单击小复选框。
  • 能把生成的html源代码也贴一下吗?

标签: php html combobox textfield


【解决方案1】:

如果您需要提交按钮,但不一定是button,请使用&lt;input type="submit"&gt;

因此,将您的 html 更改为:

<input type="submit" id="callBtn" name="callBtn" value="submit" onclick="showValues()" >

(如果您不在 php 中查询该值,则可以省略 value="submit"...)

何时使用按钮:
如果您希望提交按钮上显示的文本与提交的值不同,请使用按钮:

<button type="submit" id="callBtn" name="callBtn" onclick="showValues()" 
    value="valueToBeSubmitted">textToBeDisplayed</button>

【讨论】:

    【解决方案2】:

    在提交按钮上更改要提交的类型,而不是使用按钮作为类型:

    <input type="submit" id="callBtn" name="callBtn" value="submit" onclick="showValues()" >
    

    【讨论】:

    • 但是 php $total_numbers 只有在我按下回车时才会生成,如果我将它传递给 javascript,则只会返回空字符串。我不知道哪里出错了
    • 您能否尝试通过编辑您的问题来更详细地解释这一点?特别是。 “将其传递给 javascript”是什么意思?
    • 谢谢马丁。我使用ajax解决了这个问题。我将组合值作为请求传递给另一个 php 文件并返回字符串响应。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多