从提交中排除隐藏的表单字段
Exclude hidden form fields from submit
我正在隐藏/显示一个基于复选框状态的div。
<input type="checkbox" id="other" name="os[other]" value="6" onclick="toggle_form_element('os[other]')">
这是我的Javascript函数:
function toggle_form_element(id) {
if ((document.getElementsByName(id)[0].checked)) {
document.getElementById('sometimesHidden').style.display = 'block';
} else {
document.getElementById('sometimesHidden').style.display = 'none';
}
}
这是"sometimesHidden"div:
<div id="sometimesHidden">
<input type="text" size="20" id="other_os" name="other_os">
</div>
现在我想使用我的toggle_form_element函数也用于从$_POST['array']中排除"hidden"div中的所有输入字段。
但是我该怎么做呢?
您可以为任何不想提交的字段添加禁用属性。
function toggle_form_element(id) {
if ((document.getElementsByName(id)[0].checked)) {
document.getElementById('sometimesHidden').setAttribute("disabled", "disabled");
} else {
document.getElementById('sometimesHidden').removeAttribute("disabled");
}
}
jQuery解决方案:
// Disables all input, select & textarea tags within the .sometimesHidden div
if(checked) {
$("input, select, textarea", $(".sometimesHidden")).attr("disabled", "disabled");
}
else {
$("input, select, textarea", $(".sometimesHidden")).removeAttr("disabled");
}
您可以直接在元素上设置.disabled
属性:
function toggle_form_element(name) {
var state = document.getElementsByName(name)[0].checked;
document.getElementById('sometimesHidden').disabled = state;
}
修改元素的属性总是比修改属性好,而且布尔属性的语义也更清晰。
请注意,虽然MDN建议在隐藏字段中忽略此属性:
禁用此布尔属性表示表单控件不可用于交互。特别是,将不会在禁用控件上分派单击事件。此外,禁用控件的值不会随表单一起提交。
如果type属性的值是隐藏的,则忽略该属性。
在Chrome 27中的测试表明,Chrome 尊重disabled
属性,并防止提交hidden
字段的表单值。
而且,W3C规范没有这样的区别。它只是说"disabled
控制不能成功"。
相关文章:
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- 添加和删除隐藏字段数组中的值,而不提交表单
- 单击鼠标,用MySQL数据填充html表单输入字段
- 带有条件字段的PHP表单
- 验证PDF表单中的字段
- HTML提交表单,同时包含空字段检查和按钮隐藏
- 在表单中的输入字段上提交事件
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- 表单输入字段随着溢出的文本而增长
- 如何将onChange方法添加到ExtJS 4表单中的所有字段(textField)中
- 尝试使用名称访问表中字段的日期选取器时出现问题
- Javascript 表单 - 字段不是必需的
- 单击按钮时更改数据库表的字段值
- 数据表将字段值关联到按钮,而 ajax 填充表
- 返回数据表输入字段
- 更改附加表行字段jQuery的名称
- Angularjs表单/字段验证使用JavaScript函数,无需指令
- 仅在Firefox中,表脱离字段集边界
- 如何在表单提交后使用JQuery从附加到HTML表的字段中获取$_POST数组中的值
- 什么's提交表单后,从post数组中动态附加的表行字段中获取值的问题