注意:未定义索引单选框和文本框

Notice: Undefined index Radio & Textbox

我创建了两个单选按钮,场景如下。 1.非Dist选中,文本框应该是只读的 2. dist勾选,文本框可以填写

然而,我在Non-Dist检查并提交表单时遇到如下错误。

Notice: Undefined index: cust_edc_code in C:\xampp\htdocs\spa317\inv.php on line 49

请指教我遗漏了什么。提前致谢。

代码:

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Create SPA Invoice</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
</head>

<body>
    <form action="" method="post" name="form_spa_inv">
        <table class="tb_create_spa_inv">
            <tr>
                <td>Status* : </td>
                <td>
                    <!--To set status's radio button and save it in database-->
                    <input type="radio" name="cust_status" id="cust_status1" class="status_dis_text" value="Non-Distributor" <?php if (isset($cust_status) && $cust_status=="Non-Distributor") echo "checked";?> />Non-Dist
                    <input type="radio" name="cust_status" id="cust_status2" class="status_dis_text" value="Distributor" <?php if (isset($cust_status) && $cust_status=="Distributor") echo "checked";?> />Dist
                    <!--EDC code for distributor-->
                    <input type="text" name="cust_edc_code" size="10" />
                    <script>
                        $(function() {
                            $('input[class=status_dis_text]').change(function()
                               {
                                   if ($(this).is(':checked')) {
                                       $('input[name=cust_edc_code]').attr('disabled', 'disabled');
                                       $(this).next().removeAttr('disabled');
                                   }
                               });

                            $('input[class=status_dis_text]:first').attr('checked', 'checked').change();
                        });
                    </script>
                </td>
            </tr>
        </table>

        <p style="text-align: center;"><input type="submit" name="Submit" value="Create">
    </form>
</body>
</html>

<?php
    //including the database connection file
    include_once("config_db.php");

    if(isset($_POST['Submit']))
    {
        $cust_status=$_POST['cust_status'];
        $cust_edc_code=$_POST['cust_edc_code'];

        //insert data to database   
        $insert_cust=mysql_query("INSERT INTO tb_cust(cust_status,cust_edc_code) VALUES('$cust_status','$cust_edc_code')");
    }
?>

在输入字段上设置 disabled 可防止将其发送到服务器。如果只想防止用户修改字段,使用readonly.

<script>
    $(function() {
        $('input[class=status_dis_text]').change(function() {
            if ($(this).is(':checked')) {
                $('input[name=cust_edc_code]').attr('disabled', 'disabled');
                $(this).next().removeAttr('disabled');
            }
        });
        $('input[class=status_dis_text]:first').attr('checked', 'checked').change();
    });
</script>

jquery 代码似乎禁用了名称为 'cust_edc_code' 的输入,因此它没有被发送到服务器。

如果这行没有做真正有用的事情,请将其删除: $('input[name=cust_edc_code]').attr('disabled', 'disabled');

或将其替换为:

$('input[name=cust_edc_code]').attr('readonly', 'readonly');