使用Javascript使按钮不可见或可见

时间:2014-09-11 18:05:21

标签: javascript asp.net

我需要在ASP.Net中使用文本框的OnFocus事件。

 <asp:TextBox ID="TBAccountNum" runat="server" CssClass="textbox" Height="12px" Width="100px" Font-Size="Small" AutoCompleteType="None"  Wrap="False" OnFocus="Validator()" OnTextChanged="TBAccountNum_OnLeave" AutoPostBack="true"></asp:TextBox>

唯一的方法是使用Javascript,我对此一无所知。我在SO上发现了一小段代码看起来应该可以工作:

<asp:Content runat="server" ID="FeaturedContent" ContentPlaceHolderID="FeaturedContent">

<script type="text/javascript">

    function Validator()
    {
        document.getElementsByName("btnValidateWork").style.visibility = "visible"; 
        document.getElementsByName("btnSubmitWork").style.visibility = "hidden"
    }

然而,当我运行它时,我收到以下错误:

  

0x800a138f - Microsoft JScript运行时错误:无法设置值   属性&#39; visibility&#39 ;: object为null或undefined

任何想法我做错了(除了尝试编写代码我都不知道......:oP)?

现已发布所有相关代码。如果重要的话,我在内联网上使用IE9(由公司授权,以便不能改变)。

2 个答案:

答案 0 :(得分:1)

document.getElementsByName(“btnValidateWork”)返回一个htmlcollection。你必须迭代它,并为每个项目(节点)添加适当的CSS。

看看这个:Using document.getElementsByName() isn't working?

编辑:

要使用getElementsByName,您的元素必须具有name属性。例如:

<button name="btnValidateWork">my button?</button>
document.getElementsByName("btnValidateWork")[0].style.visibility = "hidden";

小提琴:http://jsfiddle.net/chrisbenseler/h3dwwud6/

我认为更好的方法是使用getElementsByClassName并为其添加一些类,然后执行类似document.getElementsByClassName(“hidden”)

的操作

答案 1 :(得分:0)

如前所述,document.getElementsByName返回HTML对象的集合(数组)。所以你需要这样解决它们:

 function Validate()
    {
        // To access the first
        document.getElementsByName("btnValidateWork")[0].style.visibility = "visible"; 
        document.getElementsByName("btnSubmitWork")[0].style.visibility = "hidden"
        // To access all of them
       var i = 0,
           validWork = document.getElementsByName("btnValidateWork");
       for (i = 0; i < validWork.length; i++) {
           validWork[i].style.visibility = "visible";
           // ...
       }
    }

查看工作示例here