如何根据提交表单时下拉框中的值禁用html表单输入框


How can I disable html form input boxes depending on the value in a drop down box when the form is submitted

我有一个html表单,其中包含多个输入字段、一个客户的名称和地址。当用户提交表单时,这些字段中的值将被发送到由2个表组成的数据库中。

我还有一个下拉框,上面有"是"answers"否"选项。当表单在选择"否"的情况下提交时,我需要将值正常发送到数据库,但我不需要为新条目清除输入字段,而是需要将名称和姓氏灰显/变为只读,并保留用户在其中输入的值。而地址字段为新条目重置。

然后,用户可以在地址字段中输入新值,并再次按提交,这些值将添加到我的数据库的地址表中,其中包含他们之前输入的姓名/姓氏的客户Id。

这将被重复,直到他们按下表单上的另一个按钮,然后发送最终地址并为新的客户条目重置整个表单。

到目前为止,我已经设置好了,用户可以输入客户名称和地址,然后按提交,然后它将被发送到数据库,表单将重置为另一个客户条目。

这是我的表格,有4个输入字段,

<form name="add" method="post" action="newCustomer.php">
<div id="leftcol">
<label><span>Name</span><br /> <input type="text" name="addFname" /></label>
<label><span>Surname</span> <input type="text" name="addLname" /> </label>
<label><span>Single Site?</span><Select name="field" onchange="showHide(this.value)
</label>
<div id="rightcol">
<label><span>Address line 1</span><input type="text" name="addSiteLine1" /></label>
<label><span>Address line 2</span><input type="text" name="addSiteLine2" /></label>

到目前为止,我已经尝试将其添加到我的php代码的底部

if($dropdown== "no"){
     disable_text(true);
     }

disabletext是一个javascript函数,用于禁用文本,但这并没有起到任何作用。

我还尝试在表单提交时调用此函数,但这阻止了我的$_POST方法获取值。当我设置并再次尝试使用只读而不是禁用时,似乎什么都没有发生。

我基本上是在努力避免需要第二个表单/网页来添加客户地址,并努力避免为多个地址添加多个输入框(因为有些可能有100多个地址)

编辑

$Dropdown在php中定义为:

$dropdown = $_POST['field'];

以的形式

<label><span>Single Site?</span><Select name="field" onchange="showHide(this.value);">
</label>
<Option value="yes">yes</option>
<Option value="no">no</option>

当函数被调用时,当函数禁用了我能看到的所有文本字段时,它们会闪烁灰色,然后页面会刷新,我会收到错误消息,说

    $fName = $_POST['addFname'];

无法定义。当我更改函数使字段只读时,似乎什么都没有发生,它只会提交数据并清除表单,为新的输入做好准备。

我可能不理解这个问题,所以如果我错了,请纠正我。难道你不能用javascript禁用字段,并将字段值保存在会话变量中以结转到表单中吗?

document.getElementById('fieldToDisable').style.disabled= 'true';

制作一个会话变量标志,如果在页面加载时设置了该标志,则重新填充表单并禁用字段。