【发布时间】:2012-04-16 14:17:10
【问题描述】:
我正在尝试在 Stripes 框架旁边使用 javascript 客户端模板。这意味着我无法使用 stripes 表单标签库,它默认注入一个隐藏的加密字段,stripes 使用该字段来确定哪些复选框与表单一起呈现,因此它可以确定哪些复选框未被选中,如果它们没有通过作为表单参数。
在我的所有表单旁边包含这个加密的隐藏字段而无法使用标签库是一个很大的负担,所以我正在寻找一个全局解决方案。我想出的是在提交表单之前拦截表单,将任何未选中复选框的值更改为 false,然后检查它们以便将它们发送到服务器。这样做的副作用是让用户在表单提交完成之前再次查看所有未选中的选项。有什么方法可以隐藏选中的动画但仍然让表单提交值?
这是我目前的解决方案:
$("body").delegate("form", "submit", function() {
var $this = $(this);
$('input:checkbox:not(:checked)', $this).each(function() {
var $this = $(this);
$this.attr('value', 'false');
$this.attr('checked', 'checked');
});
});
【问题讨论】:
-
好吧,我的解决方案是简单地附加一个隐藏字段: $('input:checkbox:not(:checked)', $this).each(function() { $('').attr('type','hidden').attr('name', $(this).attr('name')).attr('value','false').appendTo($this ); });