繁体   English   中英

单击提交按钮时隐藏隐藏的输入值(php / jquery)

[英]hide a hidden input value when a submit button is clicked (php/jquery)

好的,我的问题是这样的:

我有一个要求姓名,姓氏和城市的表格。 用户单击“提交”,然后信息显示在此表中:

<p>You entered the following data:</p>

            <form action="1.php" method="post">

                <input type="hidden" name="action" value="update">
                <input type="hidden" name="city" value="<?php echo $user->get_city(); ?>">

                <table>
                    <tr>
                        <th>First Name:</th>
                        <td><?php echo $user->get_fname(); ?></td>
                        <td><input type="button" id="edit_fname" value="Edit"></td>
                        <td><input type="text" id="fname" name="fname" size="20"></td>
                        <td><input type="hidden" id="valf" name="val" value="fname">
                            <input type="hidden" id="lnf" name="lname" value="<?php echo $user->get_lname(); ?>">
                            <input type="submit" id="subfn" value="Submit"></td>
                    </tr>
                    <tr>
                        <th>Last Name:</th>
                        <td><?php echo $user->get_lname(); ?></td>
                        <td><input type="button" id="edit_lname" value="Edit"></td>
                        <td><input type="text" id="lname" name="lname" size="20"></td>
                        <td><input type="hidden" id="vall" name="val" value="lname">
                            <input type="hidden" id="fnf" name="fname" value="<?php echo $user->get_fname(); ?>">
                            <input type="submit" id="subln" value="Submit"></td>
                    </tr>
                    <tr>
                        <th align="right">City:</th>
                        <td><?php echo $user->get_city(); ?></td>
                        <td>&nbsp;</td>
                    </tr>
                </table>
            </form>

因此,当用户单击编辑按钮时,将显示一个文本框和一个提交按钮,并且根据它是第一个名称编辑还是姓氏编辑,我有正确的隐藏值与表单一起发送。 唯一的问题是,无论如何,即使单击第一个名称字段的“提交”按钮,隐藏的输入“val”也会设置为“lname”。

这是jquery:

$().ready = function() {
                    $('#fname').hide();
                    $('#lname').hide();
                    $('#subfn').hide();     // submit button for first name
                    $('#subln').hide();     // submit button for last name
                    $('#valf').hide();      // hidden value for fname so we know to post lname
                    $('#vall').hide();      // hidden value for lname so we know to post fname
                    $('#lnf').hide();       // hidden value to post last name when first name edit submit
                    $('#fnf').hide();       // hidden value to post first name when last name edit submit

                    $("#edit_fname").click(function() {
                        $('#fname').show();
                        $('#subfn').show();
                        $('#valf').show();
                        $('#lnf').show();

                        if ($('#lname').show) {     // if last name edit is showing, hide it
                            $('#lname').hide();
                            $('#subln').hide();
                            $('#vall').hide();
                            $('#fnf').hide();

                        }
                    });

                    $("#edit_lname").click(function() {
                        $('#lname').show();
                        $('#subln').show();
                        $('#vall').show();
                        $('#fnf').show();

                        if ($('#fname').show()) {       // if first name edit is showing, hide it
                            $('#fname').hide();
                            $('#subfn').hide();
                            $('#valf').hide();
                            $('#lnf').hide();
                        }
                    });

                }();

这里是用于点击“提交”按钮并将“操作”更改为“更新”的PHP:

case 'update':
        $val = $_POST['val'];

        if ($val == 'fname') {
            $fname = $_POST['fname'];
            $lname = $_POST['lname'];
            $city = $_POST['city'];

            $user = new User($fname, $lname, $city);
            break;
        }
         else if ($val == 'lname') {
            $fname = $_POST['fname'];
            $lname = $_POST['lname'];
            $city = $_POST['city'];

            $user = new User($fname, $lname, $city);
            break;
        }

我测试看看$ val是什么,无论如何它似乎都被卡在'lname'上。 所以,我认为我的jQuery代码存在问题,或者问题是无论发生了什么,都应该发送姓氏'val'值,这不应该是因为我将ID隐藏起来单击名字按钮。

这是帮助我学习OOP的所有实验。 显然这根本不是生产代码。 我目前是我的应用科学学士学位的一年级学生,还有很多年,直到我获得计算机科学学士学位。 这甚至不是课程的一部分......我只是觉得无聊而且非常喜欢编程。

那么,想想有人可以帮忙吗? 对不起这么长的帖子!

这就是原因。 请参阅以下两行代码

<td><input type="hidden" id="valf" name="val" value="fname">

.....

<td><input type="hidden" id="vall" name="val" value="lname">

它们首先使用值fname定义一个名为val的隐藏字段,然后使用值lname。 即使你给他们不同的ID,他们的名字仍然是相同的。 你的jquery代码中没有任何地方你改变val的值,这就是为什么它始终保持lname

你必须根据你的逻辑改变那个值。 您可以使用以下jQuery选择器

$("input[type='hidden'][name='val']")

编辑

所以不要这样

$('#valf').show();

你可以写

$("input[type='hidden'][name='val']").val("fname");

而不是这个

$('#vall').show();

你可以写

$("input[type='hidden'][name='val']").val("lname");

您有两个不同的字段,其name="val"在同一表单中。 PHP按顺序读取其中的每一个,第二个值blobbers(覆盖)第一个,只留下$_GET数组元素中的最后一个值。

您可以通过在其末尾指定带有[]的变量名称,以相同的名称提交多个值。 这告诉PHP它是一个数组元素,就像你使用$array[] = "new element"; 在您的常规代码中添加元素到数组。

即使使用数组语法也无法帮助您,因为每次提交表单时都会将这两个值传递给服务器。 如果您只想提交一个部分或另一个部分,那么它们需要是单独的表格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM