如果用户在点击按钮之前遗漏了字段,这是我要显示的标签。我做错了什么,因为当我点击按钮时没有发生任何事情。
<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;
}
}
答案 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不同)