我有一个表格有问题,答案是复选框,在最后一个答案中还有另一个请指定选项,当我选中复选框时,文本框启用,我可以写入。
我的答案保存在一个数组中。但是现在问题是当我提交表单时我想要另一个的值请指定选项作为选中选项时填充的文本框的值。 这是我的表格:
<table>
<tr>
<td colspan="3" style="border-bottom:none">d. If you checked the boxes " very poor or poor clients", which reference point/benchmark do you use for estimating the poverty level of your clients? (Check all that apply): </td>
<td>
<input type="checkbox" name="sdd1[]" value="Persons in the bottom 50% of those living below the poverty line established by the national government"/>Persons in the bottom 50% of those living below the poverty line established by the national government <br />
<input type="checkbox" name="sdd1[]" value="Person living on less than US $1 a day international poverty line"/>Person living on less than US $1 a day international poverty line<br />
<input type="checkbox" name="sdd1[]" id="check" onclick="disableMe('mfi_1_d_i_a',this)" value="mfi_1_d_i_a" />Other(please specify):
<input type="text" name="mfi_1_d_i_a" class="init" id="mfi_1_d_i_a" maxlength="30" disabled="disabled"/> </td>
</tr>
</table>
答案 0 :(得分:2)
您实际上可以利用输入名称的一些功能。
$_POST
中不会显示输入。$_POST
中不会显示输入。因此,在您的情况下,如果您将名称从“其他”复选框中删除。并将文本框上的名称设置为sdd1[]
,然后一切都应该按照您的意愿工作。
实际发生的是“其他”复选框永远不会被发送,但是因为它在选中时启用了文本框,所以只有在选中其他时才会发送文本框值...
希望这是有道理的。
话虽这么说,你的脚本现在依赖于Javascript,这并不总是值得推荐。如果用户在禁用Javascript的情况下访问您的网站,则他们根本无法在“其他”文本框中输入值。
更通用的解决方案是在启用文本框的情况下加载页面,并使用Javascript禁用它。因此,如果用户没有Javascript,他们仍然可以在文本框中输入文本,因为它仍然会启用。如果他们有Javascript,您可以在选中/取消选中其他复选框时使用您的已禁用/启用Javascript事件。
然后在PHP中,检查sdd1数组中的“mfi_1_d_i_a”值,如果存在,则读取文本框的值。
答案 1 :(得分:0)
我想你可以通过将value
存储在数据库或服务器脚本而不是复选框中来解决此问题。
<input type="checkbox" name="sdd1[]" value="1"/>Value 1 <br/>
<input type="checkbox" name="sdd1[]" value="2"/>value 2 <br/>
<input type="checkbox" name="sdd1[]" id="check" onclick="disableMe('mfi_1_d_i_a',this)" value="1"/>Other(please specify):
<input type="text" name="mfi_1_d_i_a" class="init" id="mfi_1_d_i_a" maxlength="30" disabled="disabled"/>
关于php脚本
switch($_POST['sdd1']){
case 1:
//store value1;
break;
case 2:
//store value2;
break;
case 3:
//store text value
break;
default:
//store some value;
break;
}