警告:不完整的解决方案;随意将其用作更好解决方案的起点:
不幸的是,在一般情况下,我还没有找到这样做的好方法,但是如果输入元素直接隐藏,则以下解决方案对我有用;但是,如果某些输入包含在另一个隐藏的元素中,则它不起作用。
无论如何,我的解决方案看起来像:
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
功能,它会提升所有父母并单独检查每个父母是否隐藏。