使用JavaScript和ASP.NET设置或添加/删除css属性时闪烁

使用JavaScript和ASP.NET设置或添加/删除css属性时闪烁,javascript,asp.net,Javascript,Asp.net,我试图做一些不同的、更干净的事情,但却碰上了砖墙。 我不熟悉ASP.NET(无MVC) 我有一个HTML段落标记,其中包含一条错误消息,我还添加了服务器控件或属性,以便使用服务器端验证显示/隐藏 我通常将标签包装在一个列表中,以便表单元素精确对齐。 段落的默认样式设置为display:none,这会在页面加载时隐藏整个段落,因此没有DOM延迟 如果用户点击提交按钮时出现错误,则该样式将被另一个样式替换,该样式将其设置为:display:block 单击按钮时,错误消息会显示,但会像闪烁一样迅速消

我试图做一些不同的、更干净的事情,但却碰上了砖墙。 我不熟悉ASP.NET(无MVC)

我有一个HTML段落标记,其中包含一条错误消息,我还添加了服务器控件或属性,以便使用服务器端验证显示/隐藏

我通常将标签包装在一个列表中,以便表单元素精确对齐。 段落的默认样式设置为
display:none,
这会在页面加载时隐藏整个段落,因此没有DOM延迟

如果用户点击提交按钮时出现错误,则该样式将被另一个样式替换,该样式将其设置为:
display:block

单击按钮时,错误消息会显示,但会像闪烁一样迅速消失:

代码如下所示:


  • 无效用户名: 数字,仅大写/小写字母。没有特殊字符

    *用户名
  • 下面是JavaScript:(此代码是暂定的)

    
    函数validateForm(){
    var元素=document.forms[“成员资格”];
    var userNameFlg=document.getElementById(“lstUserNameErrorMsg”);
    var Isleters=/^[A-Za-z]+$/;
    if(element.txtUserName.value.match(Isleters)和
    element.txtUserName.value.length>=2){
    userNameFlg.setAttribute(“类”、“默认值”);
    }
    否则{
    userNameFlg.setAttribute(“类”,“失败”);
    }
    返回false;
    }
    
    这是一个新领域:我错在哪里


    谢谢

    在方法调用
    validateForm()
    之前添加
    return

    回发仍在发生,因此该段落再次被隐藏

    <asp:Button ID="btnSubmit" runat="server" Text="Create Accounte" 
    OnClick="btnSubmit_Click" OnClientClick="return validateForm()" TabIndex="11" />
    
    另外,由于你刚刚开始,我建议你看看。
    您也可以通过使用Asp.Net验证控件来实现这一点。请参阅

    Hello@newoil Programmer:这会阻止表单提交吗?是的,回击成功了。谢谢你。我是否仍然需要在函数中返回false?是的,返回false将确保回发停止。验证函数应该执行验证,如果一切正常,则返回true;如果验证失败,则返回false。true将允许回发。好吧,我有点迷茫:即使输入了正确的值,表单也没有回发:我尝试添加一个布尔值来表示正确返回的布尔值是否等于true,但这给了我同样的问题。当我在条件语句之后在函数本身中返回false时,函数总是返回false。我快到了。那么,如果为帖子输入了正确的值,我如何让函数返回true呢?很抱歉,刚才看到了你的评论,添加了回复…还有一些建议。还更改了您的正则表达式以允许数字,因为这是您的要求非常感谢。我很想学习JQuery,但在深入研究JQuery之前,我想了解JavaScript的基本原理。再次感谢您的知识。家伙。
    <script type="text/javascript">
     function validateForm() {
      var element = document.forms["membership"];
      var userNameFlg = document.getElementById("lstUserNameErrorMsg");
    
      var isLetters = /^[A-Za-z]+$/;
    
      if (element.txtUserName.value.match(isLetters) && 
    element.txtUserName.value.length >= 2) {
    
       userNameFlg.setAttribute("class", "default");
      }
      else {
       userNameFlg.setAttribute("class", "failed");
      }
      return false;
     }
    </script>
    
    
    <asp:Button ID="btnSubmit" runat="server" Text="Create Accounte" 
    OnClick="btnSubmit_Click" OnClientClick="validateForm()" TabIndex="11" />
    
    <asp:Button ID="btnSubmit" runat="server" Text="Create Accounte" 
    OnClick="btnSubmit_Click" OnClientClick="return validateForm()" TabIndex="11" />
    
    function validateForm() {
                var userNameFlg = document.getElementById("lstUserNameErrorMsg");
                var txtBox = document.getElementById("txtUserName");
                var isLetters = /^[A-Za-z0-9]+$/;
    
                if (txtBox.value != null && txtBox.value.match(isLetters) && txtBox.value.length >= 2) {
                    userNameFlg.setAttribute("class", "default");
                    return true;
                }
                else {
                    userNameFlg.setAttribute("class", "failed");
                    return false;
                }
            }