如果一个表单输入被禁用,那么两个表单输入是否可以具有相同的名称
Can two form inputs have the same name if one is disabled?
我有一个地址表,如果国家是美国,我想有一个州的选择框,如果是外国,我想把它改成文本框,这样就可以输入州/省。
我用PHP生成代码(例如states select和country select),我想输出select和textbox,最初隐藏和禁用textbox,然后如果用户更改country取消隐藏并启用textbox,隐藏和禁用select。
我的问题是,如果两个输入都有相同的名称,假设其中一个在提交表单时会被禁用,这是否有效?
作为一个额外的问题,有更好的方法吗?
是的,这是可能的,也是最好的方法,因为禁用的输入不会在请求中发送,并且它会生成有效的语义HTML。
如w3:所示
设置后,禁用的属性对元素具有以下影响:
- 禁用的控件无法获得焦点
- 选项卡导航中将跳过禁用的控件
- 禁用的控件无法成功
[…]
在本例中,INPUT元素被禁用因此,它无法接收用户输入,也不会将其值与表单一起提交。
假设您使用jQuery,您可以执行以下操作:
HTML:
<select id="countries">
<option>Countries</option>
</select>
<select id="states" style="display: none"> <!-- States in US -->
<option>States</option>
</select>
<textarea id="address" style="display: none">
</textarea>
JS:
// Cache states list and address box beforehand so we don't have to query every time.
var $states = $("#states"),
$address = $("#address");
$("#countries").change(function () { // Bind to change event for checking if US selected
var isUnitedStates = $(this).val() == "United States";
if (isUnitedStates) { // US is selected, show States
$states.attr("id", "address").show()
$address.attr("id", "_address").hide()
} else { // US is not selected, show Address box
$states.attr("id", "_address").hide()
$address.attr("id", "address").show()
}
})
这不是很方便,但如果你真的想确定,这是你的一个选择。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何在submit to sightly时将表单输入值作为参数传递给WCMUsePojo
- 单击鼠标,用MySQL数据填充html表单输入字段
- 从HTML表单发布blob的表单输入类型是什么
- 在不使用PHP的情况下将表单输入值获取到Javascript中
- 在Chrome中重新加载页面后清除表单输入值
- CasperJS填充表单-输入名称有方括号
- 表单输入字段随着溢出的文本而增长
- Highcharts:根据表单输入动态显示数据
- 如何在为表单输入分别处理$(this)和$时编写DRY代码
- 如何从AngularJS表单输入中生成一个永久变量
- 将表单输入保存到txt,弹出结果,不更改页面
- 在表单输入字段中创建默认值
- 如何根据提交表单时下拉框中的值禁用html表单输入框
- 使用jQuery延迟表单输入,并在延迟后在同一页面上显示结果
- Jquery无法找到给定表单id的表单输入
- 如何使用javascript验证在表单输入中避免负值、浮点值和十进制值
- 对表单输入执行计算
- Javascript 重复表单输入
- 使用 JavaScript 计算并添加表单输入的值