如何切换'可见'没有帖子的形式属性

时间:2014-07-02 22:38:19

标签: javascript jquery html asp.net

我需要在一个asp.net页面中共存2个服务器表单。这只能将其中一个设为visible='false'。可见性必须通过点击某个按钮来改变,但我需要没有页面加载,我的意思是,通过Javascript或AJAX。请注意,我们讨论的是“可见”控件属性,而不是'visibility''display'样式属性!

<form id="form_add" runat="server" visible="false">

3 个答案:

答案 0 :(得分:2)

编辑:

来自forums.asp.net post

  

我认为重要的区别在于您是否需要访问面板内的项目,客户端。设置visible = false将导致面板无法呈现,因此您无法再次访问任何控件,客户端。然而,如果您设置display none,那么您将可以访问控件,因为面板已呈现。

因此,如果您想要从客户端显示和隐藏它,然后将visible设置为true并使用css隐藏它,那么当您将可见设置为 false ,表单不会在页面上呈现,因此无法在客户端访问:

<form id="form_add" ClientIDMode="Static" runat="server" visible="true" style="display:none;">

请注意,我将 ClientIDMode 设置为静态,当asp.net呈现服务器端控件时,很可能会更改控件的ID,所以我们可以设置控件ID静态,以便在客户端呈现时生成相同的ID。

MSDN Details

另一个LINK,用于解释ClientIDMode

现在您可以从客户端切换它:

$("#form_add").show(); //  show it

$("#form_add").hide(); // hide it

答案 1 :(得分:2)

我认为首先要问的重要问题是:哪里你是否正在添加其他表单?在ASP.Net Web Forms中,“只能有一个”,而无法嵌套表单spec)。

然后

  • 什么是“其他”形式的目的?
  • 必须是服务器端form吗?或者一个form
    • 必须将数据(部分/其他)发送到哪里?
    • {li>无法由Button.PostBackUrl 处理

如果您没有使用MasterPage,那么您可以在服务器端form之外添加另一个/多个HTML表单。它会这样,所以你不能在其中添加服务器控件(但仍然可以以裸机方式访问<input />个字段。)

除此之外,您可以通过Javascript“注入”forms

答案 2 :(得分:-1)

使用JavaScript,您可以尝试使用getAttribute('visible')来检查它是true还是false

然后,您可以使用setAttribute('visible',<boolean value>)将其设置为truefalse

您可以使用getAttribute

致电setAttributedocument.getElementById('form_add')

像:

Var t = document.getElementById('form_add');
if(t.getAttribute('visible')) 
    t.setAttribute('visible', false);