在Javascript中使ASP标签可见?

时间:2010-01-06 14:07:27

标签: asp.net javascript

如果用户在点击按钮之前遗漏了字段,这是我要显示的标签。我做错了什么,因为当我点击按钮时没有发生任何事情。

<asp:Label ID="lblError" runat="server" 
Text="* Please complete all mandatory fields" style="display: none;" >
</asp:Label>

这是我点击按钮时调用的功能:

function valSubmit(){
    varName = document.form1.txtName.value;
    varSurname = document.form1.txtSurname.value;

    if (varName == "" || varSurname == "") 
    {
     document.getElementById('lblError').style.display = 'inherit'; 

    }
    else
    { 

     .................other code go here...........................
    return true; 
    } 

}

4 个答案:

答案 0 :(得分:4)

为什么不使用验证控件?这些将为您提供开箱即用的客户端和服务器端验证 - 不是我懒惰或任何东西......; - )

编辑评论:

可以将RequiredFieldValidator设置为在每个控件的旁边显示单个红色星号,并且可以使用验证摘要控件但是会占用空间。

因此,ASP.Net可能会重命名您的控件,因此您的JS应该读取:

document.getElementById('<%= lblError.ClientID %>').style.display = 'inherit';

给它一个去......

就个人而言,我仍然使用Validator控件; - )

答案 1 :(得分:1)

您不应该在JavaScript代码中使用lblError作为ID。相反,你应该使用:

'<%= lblError.ClientID %>'

当然,只有在ASP.NET文件中生成JavaScript代码时才可以这样做。

答案 2 :(得分:0)

关于您想要的活动使用此

document.getElementById('<%= lblError.ClientID %>').style.display = ""; or
document.getElementById('<%= lblError.ClientID %>').style.display = "block"

确定然后尝试这个,而不是客户端,使其成为服务器端。首先将它设置为隐形,如使用lblEror.visible = false在formload事件集上不可见,并从html中删除style =“display:none”。 然后在所需的事件/ s上使其可见,并在处理后再次不可见。

如果你想严格要求js.try这个解决方法。从asp标签中删除样式。 on body onload使其禁用某些js函数。现在在btn click事件中使用类似这样的方法使其可见

    function Validate()
    {
         var objLbl = $get('<%=lblError.ClientID%>');
         if (validations fails)
         {
             objLbl.style.display = ""; //displays label
             return false;
         }
         else
         {
             objLbl.style.display="none" //hides label
             return true;
         }
    }
<asp:button id="btnValidate" runat="server" onclientclick="return validate();"/>

希望这会起作用

答案 3 :(得分:-1)

看一下jquery,你可以按类而不是id来选择,这些id在渲染到页面时永远不会改变(与id不同)