通过JavaScript无效页面

时间:2011-02-14 15:15:10

标签: javascript asp.net validation

我有一个包含多个验证器控件的注册表单。我正在通过提供用户名 AJAX(使用jQuery,而不是UpdatePanel)。如果使用了用户名,我想使页面无效,就像其他ASP.NET验证器从我的JavaScript函数那样做。这可能吗?实例

这是我目前的功能:

// In head...
<script type="text/javascript">
$(document).ready(function () {
    $('#<%= username.ClientID %>').blur(function () {

        $.ajax({
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            url: 'MyService.asmx/CheckAvailability',
            dataType: 'json',
            data: '{ "username": "' + username + '" }',
            success: function (response) {

                // stuff

                // If username is taken, invalidate

            }, error: function () { /* stuff */ }
        });
    });
});
</script>

// The markup...
<dl><dt>Username</dt>
<dd>
    <asp:textbox id="username" runat="server" />
    <asp:requiredfieldvalidator id="usernameRequiredValidator" runat="server"
        controltovalidate="username"
        errormessage="Required"
        display="Dynamic" />
    <span id="avail_response"></span>

<!-- More stuff... -->

1 个答案:

答案 0 :(得分:2)

This link提供了对ASP.Net验证的深入解释。向下滚动到“客户端API”段落,其中说明您可以设置Page_IsValid变量。但请注意,无法保证此API在将来的.NET版本中保持不变,因此请检查是否存在Page_IsValid。

编辑:

对不起,在我之前的评论中,我有点匆忙,我只是回答了你的问题而没有看大局。我只是重读了你的问题,事实上,它什么都不做,因为当你用户点击提交按钮时,它会触发所有验证器的重新验证。由于文本框用户名具有值,因此您的requiredvalidator有效且表单提交。

我认为从长远来看(以及不直接调用.NET的javascript函数的更好的解决方案)如下:

  1. 添加隐藏字段
  2. 为隐藏的内容创建一个requiredfieldvalidator 字段
  3. 将requiredfieldvalidator置于第一个requiredvalidator后面,并为其提供与requiredvalidator相同的errormessage
  4. 在隐藏字段中放置一些值 你的成功功能如果 所有其他用户名均可用 例如,将隐藏字段设为空。
  5. 这有点绕道而且它是未来的证明&amp;比使用.NET验证器框架的javascript函数确定如何使用它更容易。