2011-05-15 49 views
0

我已将表格分成两部分:sec1sec2。每个部分是名为sec1Divsec2Div的div的一部分。根据一些选择div是隐藏。但问题是仍然提交隐藏段中的字段。请建议一种方式,以便在提交时不会提交div中的所有字段。如何停止提交表单中的所有字段?

回答

3

有几种方法可以做到这一点。你可以挂钩一个函数,形式为submit的事件,或者你可以删除隐藏div内的字段的属性。您还可以通过设置disabled="disabled"禁用字段,

如果您使用jQuery,您可以执行这些示例。

要禁用隐藏的div各个领域,你可以这样做:

function hideDiv(el) { 
    $('input', el).each(function(){ 
     $(this).attr('disabled', 'disabled'); 
    }); 
    $(el).hide(); 
} 

而且,相应的显示DIV功能:

function showDiv(el) { 
    $('input', el).each(function(){ 
     $(this).removeAttr('disabled'); 
    }); 
    $(el).show(); 
} 

请提醒的是,这仅仅是一个代码示例。但你可以从中得到这个想法。

1

发生这种情况的原因是因为元素仍在form元素内。使用CSS隐藏div不会改变这一点 - 它们仍然存在于DOM中。

这很可能是最容易隐藏input字段添加到可用于识别服务器端的哪一个,你应该处理每个div。然后您可以简单地忽略隐藏表单中的数据。

如果你真的必须阻止发布的数据,这是有点混乱,但你可以移动form元素以外的隐藏div的内容,以便这些字段不会被提交。如果您想再次显示div,则需要将字段移回。取决于CSS的复杂程度,这可能会在某些浏览器中导致问题,所以我建议使用我的第一个建议。