javascript - ASP.NET OnClientClick ="return validate()"不起作用

标签 javascript c# jquery asp.net validation

在下面的aspx页面中,无论我如何调用OnClientClick="return validate()",页面都会回发。以下是我的尝试以及每次尝试的结果:

OnClientClick="return true"----- 回发成功

OnClientClick="return false"------ 无回发

OnClientClick="return validate()"----- 即使输入错误也会成功

OnClientClick="return validate()"------ 输入正确即可成功

OnClientClick="if (!validate()) {return false;}"----- 无论输入如何都不会回发

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
<script type="text/javascript">
    function validate() {
        $('input[type=text]').each(function () {
            if ($(this).val() === '' || $(this).val() === 'Required Field' || $(this).val() === 'Username' || $(this).val() === 'Password') {
                return false;
            } else {
                return true;
            }
        });
    }
    $(document).ready(function () {
        $('input[type=text]').focusin(function () {
            $(this).removeClass('Invalid');
            $(this).val('');
        }),
         $('input[type=text]').focusout(function () {

             if ($(this).val() === '') {
                 $(this).removeClass('Valid');
                 $(this).addClass('Invalid');
                 $(this).val('Required Field');
             } else {
                 $(this).addClass('Valid');
             }
         });
    });
</script>
<title></title>
<style type="text/css">
    .Invalid {
        border: 2px solid red;
        background-color: lightpink;
        color: red;
    }

    .Valid {
        border: 2px solid green;
        background-color: lightgreen;
        color: green;
    }
</style>
</head>
<body>
    <form id="frmLogin" runat="server">
        <asp:TextBox ID="txtUser" runat="server" Text="Username"></asp:TextBox>
        <asp:TextBox ID="txtPassword" runat="server" Text="Password"></asp:TextBox>
        <asp:Button ID="btnSubmit" runat="server" Text="Login" OnClientClick="if (!validate()) {return false;}" OnClick="btnSubmit_Click" />
  </form>
</body>
</html>

最佳答案

您可以尝试将按钮更改为:

<asp:Button ID="btnSubmit" runat="server" Text="Login" OnClick="return validate();" />

如果这不起作用,请使用表单 onsubmit 处理程序,这可能是更好的方法:

<form id="frmLogin" runat="server" onsubmit="return validate();">

关于javascript - ASP.NET OnClientClick ="return validate()"不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35282582/

相关文章:

javascript - 错误 : Object doesn't support property or method 'css'

javascript - 正则表达式意外标记

javascript - 在外部 JavaScript 文件中调用函数时出错

c# - 如何制作具有更多点的图形路径?

c# - Sqlite 中的多线程

c# - 不支持的媒体类型 web api 发布

jquery - 为什么 jQuerys 的 show 函数以这种方式工作?

javascript - 如何使用 jquery 设置文本字段所需的 html5

javascript - 将变量与循环结合起来

javascript - 有条件地加载图像以进行响应式设计