嵌套表单,用于禁用带有选择框 HTML 的文本字段

Nested Form to disable text field with selection box HTML

本文关键字:HTML 文本 字段 有选择 表单 用于 嵌套      更新时间:2023-09-26

我有代码形式.html和条目.php

首先,我想使用 javascript 禁用带有选择框的文本字段,然后提交它以给出输出。如果我没有在表单<form name="form1" method="post" action="entry.php">使用此代码.html是否可以成功显示在 Web 浏览器中,但是我如何使用一个提交按钮提交它?

形式.html

<html>
<head> 
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
    $('.group').hide(); 
    $('#option1').show();
    $('#chooseForm').change(function() {
        $('.group').hide();
        $('#'+$(this).val()).show();
    })  
});
</script>
</head>
<body>
<form name="form1" method="post" action="entry.php">
    <select id="chooseForm" name="select">
        <option value="option1">Form1</option>
        <option value="option2">Form2</option>
        <option value="option3">Form3</option>
    </select>
    <form id="option1" class="group">
        <input name="a" value="form A"><br>
    </form>
    <form id="option2" class="group">
        <input name="a" value="form A"><br>
        <input name="b" value="form B"><br>
    </form>
    <form id="option3" class="group">
        <input name="a" value="form A"><br>
        <input name="b" value="form B"><br>
        <input name="c" value="form C"><br>
    </form>
<input value="Save" name="submit" type="submit"><br>
</form>
</body>
</html>

条目.php

<?php
$select = $_POST['select'];
$a = $_POST['a'];
$b = $_POST['b'];
$c = $_POST['c'];
echo $select;
echo "<br>";
echo $a;
echo "<br>";
echo $b;
echo "<br>";
echo $c;
?>

任何人都可以在没有嵌套形式的情况下解决此代码吗? 谢谢:)

首先,你不能嵌套表单。
据我了解,这个想法是对一些元素进行分组。如果是这样,则将内部<form>标签替换为 <div> s。

另一个问题是您希望通过不同的部分使用相同的输入元素名称。基本上,如果name不是唯一的,它将使用最后一次出现的值进行更新。例如:

<input type="text" name="a" value="val 1" />
<input type="text" name="a" value="val 2" />

发布上述内容时,$_POST['a']将包含val 2值。甚至,如果第二个文本框被隐藏。因此,要么使文本框名称唯一,要么禁用隐藏的文本框名称。 disabled属性将使控件对用户输入禁用,并且也不存在于数组$_POST。因此,在这种情况下:

<input type="text" name="a" value="val 1" />
<input type="text" name="a" value="val 2" disabled />

$_POST['a']将包含val 1值,因为第二个文本框被禁用。
在您的情况下,每次隐藏某个部分时,都应禁用组内的所有控件。操作方法如下:禁用div 内的所有表单元素。