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

时间:2013-10-16 19:42:13

标签: javascript html forms

我有代码form.html和entry.php

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

form.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>

entry.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;
?>

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

1 个答案:

答案 0 :(得分:0)

首先,you can't nest forms 据我所知,这个想法是将一些元素分组。如果是,请将内部<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值,因为第二个文本框已被禁用 在您的情况下,每次隐藏一个部分时,您应该禁用该组中的所有控件。以下是如何操作:disable all form elements inside div