如何隐藏/取消隐藏窗体
How can I hide/unhide a form?
我在玩jquery,制作了一个提交信息而不刷新页面的表单,但在我遵循的教程中,它必须首先显示一个表单供人们编辑,但我想做的略有不同。
我想显示一个用户配置文件页面,然后在每个项目旁边都有一个小的编辑链接,如果他们单击编辑,就会显示一个文本字段。我相信我可以在不刷新的情况下提交表单,但当单击"编辑"按钮而不刷新时,如何才能显示表单?
你知道我如何才能做到这一点,甚至更好吗?我应该寻找什么来学习如何做到这一步?我浏览了jquery网站上的示例项目,似乎没有一个项目通过点击来隐藏/取消隐藏。
这里有一个我将如何处理这个概念的快速示例,我将通过发布和验证以及其他一些服务器端脚本等来跟进它,但这可以作为你的垫脚石。您需要记住的是,javascript/jquery完全是烟雾和镜子,因为它是全处理的客户端,您基本上需要处理屏幕上的内容,无论是隐藏的还是其他的。在这种情况下,您有两个元素,一个默认显示,另一个隐藏,当选择一个时,您可以创建一个将一个隐藏在另一个之上的逻辑,并分别对其中一个执行所需的操作。
<div id="wrapper">
<div id="container">
<div id="storedvalue"><span>Hello</span> [<a href="javascript:void(0);" id="editvalue">edit</a>]</div>
<div id="altervalue" style="display:none;"><input type="text" name="changevalue" id="changevalue" value="Hello"> [<a href="javascript:void(0);" id="savevalue">save</a>]</div>
</div>
</div>
<script type="text/javascript">
$('#editvalue').click(function(e){$('#storedvalue').hide();$('#altervalue').show();});
$('#savevalue').click(function(e){
var showNew = $('#changevalue').val();
$('#altervalue').hide();
$('#storedvalue').show();
$('#storedvalue span').text(showNew);
});
</script>
演示
如果不刷新页面,就无法提交HTML表单。但是,JavaScript(扩展为jQuery)可以用于提交类似的GET或POST请求。您还可以使用jQuery的.append
方法插入必要的标记来动态创建输入。jQuery还可以用于访问已输入到字段的值(通常由id完成)。
我正在做的事情simmilar到你需要的:
(这个特定的代码从一个可见的表单中获取一些输入,并将其聚合为一个不可见的表单以供以后使用)
jQuery('#submitButton').click(function(){
jQuery('#prev_request').append('<input type="hidden" name="sort_order" value="'+jQuery("input[@name=sort_order]:checked").val()+'" />');
jQuery('#prev_request').append('<input type="hidden" name="sort_by" value="'+ jQuery("#sort_by option:selected").val() +'" />');
});
我认为最简单的做法是这样的:
HTML
<form id="form1" style="display: none;">
</form>
<a id="editButton" href="javascript:void(0)">Edit</a>
<a id="closeButton" href="javascript:void(0)" style="display: none;">Close</a>
JavaScript(请确保在您的页面上包含jQuery)
$(function() {
$("#editButton").click(function() {
$("#form1").show();
$("#editButton").hide();
$("#closeButton").show();
});
$("#closeButton").click(function() {
$("#form1").hide();
$("#editButton").show();
$("#closeButton").hide();
});
});
使用show()
和hide()
方法也可以很容易地添加扩展过渡效果。只需将所需的转换持续时间传递给函数(以毫秒为单位),如下所示:
$("#form1").show(500);
损失,
我会在UpdatePanel控件中使用asp DataGrid:
.ascx:
<asp:UpdatePanel ID="yourUPpanel" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:DataGrid ID="yourDG" runat="server" AutoGenerateColumns="False" CellPadding="2" AllowSorting="False" AllowPaging="False" EnableViewState="false" onItemCommand="yourDG_CellClick">
<FooterStyle CssClass="cssFooter"></FooterStyle>
<AlternatingItemStyle CssClass="CssAltItem"></AlternatingItemStyle>
<ItemStyle CssClass="cssGridItem"></ItemStyle>
<HeaderStyle CssClass="GridHeader"></HeaderStyle>
</asp:DataGrid>
<asp:Panel ID="yourAdditionalStuff" runat="server" Visible="false">
<table>
<tr>
<td>
<asp:TextBox ID="yourTXT" runat="server" Width="100px"/>
</td>
</tr>
</table>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
.vb
Public Sub yourUPpanel_Load(ByVal sender As Object, ByVal e As EventArgs) Handles yourUPpanel.Load
If cnADO Is Nothing Then blahblah.getConnection("yourserver", cnADO) 'whatever the case may be here
Try
Dim da As SqlDataAdapter
Dim cmd3 As New SqlCommand
cmd3.Connection = cnADO
cmd3.CommandType = CommandType.StoredProcedure
cmd3.CommandText = "SP to populate GRID" 'whatever the case may be here
daPeople = New SqlClient.SqlDataAdapter
daPeople.SelectCommand = cmd3
If yourDG.Columns.Count <= 0 Then
Dim btnc As New ButtonColumn
btnc.ButtonType = ButtonColumnType.LinkButton
btnc.HeaderText = "Edit"
btnc.DataTextField = "primarykey"
btnc.DataTextFormatString = "<img border='0' src=" & ResolveUrl("~/images/edit.gif") & ">" 'whatever the case may be here
btnc.CommandName = "Edit"
btnc.ItemStyle.HorizontalAlign = HorizontalAlign.Center
yourDG.Columns.Add(btnc)
Dim bc As New BoundColumn
bc = New BoundColumn
bc.DataField = "sqlColumnName"
bc.HeaderText = "First"
yourDG.Columns.Add(bc)
End If
Dim dt As New DataTable
yourDG.Fill(dt)
yourDG.DataSource = dt
yourDG.DataBind()
'lbtnEditAddPerson.Visible = True
Catch ex As Exception
Finally
If Not cnADO Is Nothing Then
If cnADO.State = ConnectionState.Open Then
cnADO.Close()
End If
End If
End Try
End Sub
Protected Sub yourDG_CellClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)
Dim cmd As String = e.CommandName.ToString.ToUpper
If cmd.ToUpper = "EDIT" Then
Using cnADO As SqlConnection = New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("yourserver").ToString) 'whatever the case may be here
Using scmd As New SqlCommand("", cnADO)
scmd.CommandText = "YOURTEXTHERE"
Using dr As SqlDataReader = scmd.ExecuteReader()
If dr.Read Then
'fill textbox for load
End If
End Using
End Using
End Using
yourAdditionalStuff.Visible = True
ElseIf cmd.ToUpper = "ANOTHERCOMMAND" Then 'if you want to...allows for extensibility (would need another column tho)
End If
End Sub
请注意,这是一个框架,但应该非常接近您的需求(或者至少为您提供搜索内容)。我实际上已经使用了这种方法,所以我可以确认它确实有效。如果你不使用数据库(即,如果你不需要保存/加载用户在你出现的文本框中输入的内容),那么它应该简化。不过,这应该会让你在谷歌上搜索。希望它能有所帮助!
-sf
编辑:根据Chris的评论,我认为:
function hideOnClick(){
var d = document.getElementById('<% =yourtextbox.ClientID %>');
if(d.style.display == "none"){
d.style.display = "inline";
}else{
d.style.display = "none";
}
}
如果您只需要客户端javascript来切换显示/隐藏,则可能会对您有所帮助。你所需要做的就是把它附加到你的编辑按钮上。
- 根据单元格内容隐藏/取消隐藏行
- 我如何才能获得隐藏/取消隐藏按钮来同时发送帖子请求
- 在其他元素的基础上隐藏/取消隐藏jsp元素
- 如何隐藏/取消隐藏窗体
- 聚合物 IronRessizeableBehavior 当“可调整大小”元素被隐藏/取消隐藏时,不会触发 Iron 调整
- 使用挖空.js隐藏/取消隐藏时不应用 jquery UI 主题
- 无法隐藏/取消隐藏表单内的按钮
- 在给定行索引和表 ID 的情况下隐藏/取消隐藏表行
- 使用 jQuery 隐藏取消隐藏列
- JS使用CSS格式隐藏/取消隐藏
- 关于django模板中表单字段值的动态隐藏/取消隐藏选项卡
- 如何隐藏/取消隐藏代码镜像
- 带有隐藏/取消隐藏选项的Javascript图像滑块
- 使用Javascript隐藏/取消隐藏带有文本输入的表行,具体取决于所选的下拉选项
- 隐藏/取消隐藏带有密码的菜单链接
- 通过悬停来隐藏/取消隐藏HTML部分
- 隐藏/取消隐藏面板的JavaScript函数
- 移动(不是滚动)锚点使用javascript,在函数中的元素被隐藏/取消隐藏
- 如果单击按钮,则使用Jquery隐藏/取消隐藏文本框
- 使用 Jquery 或 Javascript 隐藏/取消隐藏 html 元素