原型仅序列化可见的表单字段值
Prototype serialize only visible form field value
是否可以在prototype.js
中仅序列化可见的表单字段值。我有一个表单,其中to元素具有相同的名称,但一个是可见的,但另一个是隐藏的。当我使用$('formid').serialize()
序列化表单时,两个字段的值都会出现,输出如下:
user_email=abc@example.com&mymodule_custom_delivery_area=20&mymodule_custom_delivery_area=test
第一个元素是下拉列表,而第二个元素是文本框。文本框被隐藏,并显示下拉列表。两者都有相同的名字。我不想获取隐藏的文本框值。我该怎么做?感谢
警告:解决方案不完整;可以将其作为更好解决方案的起点:
不幸的是,我还没有找到在一般情况下这样做的好方法,但以下解决方案对我有效,如果输入元素直接隐藏;然而,如果某个输入包含在另一个元素中,而该元素又被隐藏,则它不起作用。
无论如何,我的解决方案看起来像:
function check() {
var inputs = $("myform").getElements();
var visibleInputs = inputs.grep({ match: function(elem) { return elem.visible();} });
var serialized = Form.serializeElements(visibleInputs);
console.log(serialized); // here do something useful with it instead
}
在第一行,它收集表单中所有字段的列表。在第二行,它从中过滤所有可见元素(grep
需要一个具有match
函数的项,所以我提供了一个带有match
键的简单字典,让它误以为我传入了匹配器)。最后,只有过滤后的元素被序列化。
请:有人能改进这一点,以排除由于某些包含元素被隐藏而不可见的输入字段吗?我只能想到一些令人难以置信的复杂match
函数,它会提升所有的父母,并在隐藏的情况下分别检查每个父母。
相关文章:
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- 添加和删除隐藏字段数组中的值,而不提交表单
- 单击鼠标,用MySQL数据填充html表单输入字段
- 带有条件字段的PHP表单
- 验证PDF表单中的字段
- HTML提交表单,同时包含空字段检查和按钮隐藏
- 在表单中的输入字段上提交事件
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- 表单输入字段随着溢出的文本而增长
- 如何将onChange方法添加到ExtJS 4表单中的所有字段(textField)中
- 尝试使用名称访问表中字段的日期选取器时出现问题
- Javascript 表单 - 字段不是必需的
- 单击按钮时更改数据库表的字段值
- 数据表将字段值关联到按钮,而 ajax 填充表
- 返回数据表输入字段
- 更改附加表行字段jQuery的名称
- Angularjs表单/字段验证使用JavaScript函数,无需指令
- 仅在Firefox中,表脱离字段集边界
- 如何在表单提交后使用JQuery从附加到HTML表的字段中获取$_POST数组中的值
- 什么's提交表单后,从post数组中动态附加的表行字段中获取值的问题