在javascript上将标签更改为文本框

时间:2012-02-07 02:28:31

标签: javascript asp.net css gridview

首先,我的英语不是很好但是我试着让它尽可能地理解

所以我做的是创建一个gridview,其中列;  两个控制标签和文本框    标签设置为可见    而文本框反之亦然

这是我的gridview的客户端代码

<asp:Image ID="img" onclick="javascript:Toggle(this);" runat="server" ImageUrl="~/Images/minus.gif"
                                    ToolTip="Collapse" Width="7px" Height="7px" ImageAlign="AbsMiddle" /></a>
                            <asp:Label ID="lbllastname" Height="15px" Width="180px" runat="server" Text='<%# Eval("CourseCatName")%>'></asp:Label>
                            <asp:TextBox ID="txtCourseCategory" AutoPostBack="true" runat="server" Text='<%# Eval("CourseCatName")%>'
                                Font-Size="XX-Small" Font-Names="Verdana" Style="display: none" OnTextChanged="txtCourseCategory_TextChanged"
                                Height="16px" Width="207px"></asp:TextBox><br />

我知道很难在gridview中找到控件所以我所做的是在我的服务器端创建一个atrribute来传递我的javascript函数 这就是我做的事情

Dim txttry As TextBox = DirectCast(e.Row.FindControl("txtCourseCategory"), TextBox)
        Dim labeltry As Label = DirectCast(e.Row.FindControl("lbllastname"), Label)
        labeltry.Attributes.Add("onclick", "javascript:return validate('" + txttry.ClientID + "','" + labeltry.ClientID + "')")

在我的javascript上我创建了一个调用控件的函数

  function validate(txtobj, lblobj) {

        document.getElementById(lblobj).style.display = 'none';
        document.getElementById(txtobj).style.display = 'block';  
    }

因此代码可以工作,我认为它几乎已经完成,但是当我运行程序并点击标签时; 标签隐藏但文本框在下面,就像之间有<br/>一样 我再次检查代码,但没有发现任何可能使下面的文本框。 先生/女士您认为这是什么问题,还是应该为它添加一个CSS? 或者我的代码是个大问题? 我愿意接受建议:不好或好。 顺便说一下,我是javascript的新手

感谢您花时间和精力试图阅读我的问题。

2 个答案:

答案 0 :(得分:3)

尝试更改以下行:

document.getElementById(txtobj).style.display = 'block';

成为:

document.getElementById(txtobj).style.display = '';

// OR

document.getElementById(txtobj).style.display = 'inline';

如果将元素设置为block元素,它将显示在下一行,因为这是块元素的作用。如果将display属性设置为空字符串,则应通过将其设置为特定元素类型的默认display类型使其再次可见,对于特定元素类型,在输入元素的情况下应为{{1 }}。如果这不起作用,您可以明确地将其设置为inline

此处提供了有关inline的更多信息:http://www.quirksmode.org/css/display.html - 完整的图片,甚至是页面底部的动态更改设置演示。

答案 1 :(得分:0)

您也可以不使用javascript进行操作。 为此,您需要使用2个面板。在一个面板中保留您的标签,在其他面板中保留您的文本框。现在通过将其visible属性设置为false来保持面板与文本框不可见。 现在在按钮单击事件中获取标签文本并将其存储在字符串变量中,并将包含标签的面板的visible属性更改为false。然后将包含文本框的面板的可见属性更改为true,并使用变量中的字符串设置text属性。