0

我有代码 form.html 和 entry.php

首先,我想使用 javascript 禁用带有选择框的文本字段,然后提交它以提供输出。如果我不使用此代码<form name="form1" method="post" action="entry.php">form.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;
?>

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

4

1 回答 1

0

首先,您不能嵌套表单
据我了解,这个想法是对一些元素进行分组。如果是这样,则将内部<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 中的所有表单元素

于 2013-10-17T07:47:12.900 回答