Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过JavaScript使页面无效_Javascript_Asp.net_Validation - Fatal编程技术网

通过JavaScript使页面无效

通过JavaScript使页面无效,javascript,asp.net,validation,Javascript,Asp.net,Validation,我有一个带有几个验证程序控件的注册表。我正在通过 AJAX(使用jQuery,而不是UpdatePanel)。如果使用用户名,我会像其他ASP.NET验证器一样通过JavaScript函数使页面无效。这可能吗?例子 以下是我当前的功能: // In head... <script type="text/javascript"> $(document).ready(function () { $('#<%= username.ClientID %>').blur(f

我有一个带有几个验证程序控件的注册表。我正在通过 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... -->
//在头部。。。
$(文档).ready(函数(){
$('#').blur(函数(){
$.ajax({
键入:“POST”,
contentType:'application/json;charset=utf-8',
url:'MyService.asmx/CheckAvailability',
数据类型:“json”,
数据:“{”用户名“:“+username+”}”,
成功:功能(响应){
//东西
//如果使用用户名,则无效
},错误:函数(){/*stuff*/}
});
});
});
//标记。。。
用户名
提供了ASP.Net验证的深入解释。向下滚动到“客户端API”一段,其中解释了可以设置Page\u IsValid变量。但是,请注意,不能保证此API在将来的.NET版本中保持不变,因此请检查页面是否存在

编辑:

对不起,在我之前的评论中,我有点匆忙,我只是回答了你的问题,没有看大局。我只是重读了你的问题,实际上,它不会做任何事情,因为当你看到用户点击提交按钮时,它会触发所有验证器的重新验证。因为textbox用户名有一个值,所以您的requiredvalidator有效,表单提交

我认为从长远来看,一个更好的解决方案(不直接调用.NET的javascript函数)是:

  • 添加一个隐藏字段
  • 为该隐藏项创建requiredfieldvalidator 场
  • 将requiredfieldvalidator放在第一个requiredvalidator后面,并给出与requiredvalidator相同的错误消息
  • 在中的隐藏字段中放置一些值 如果 用户名在所有其他文件中都可用 案例中,将隐藏字段设置为空

  • 这有点绕道,但它是经得起未来考验的&比弄清楚如何使用.NET验证程序框架的javascript函数更容易。

    您能解释一下“使页面无效”是什么意思吗?或者举个例子。当其中一个表单元素为“无效”时,用户无法提交表单。这是通过ASP.NET验证控件自动处理的。我想从我的AJAX函数中钩住这个功能。与其使页面无效,还不如使页面中的提交按钮无效?谢谢。但是我如何在上面的javascript函数中使用Page_IsValid对象呢?在成功回调函数中,使用'if(typeof Page_IsValid!=“undefined”){Page_IsValid=false;}'我认为应该可以,但我不确定(我现在无法检查)。是的,我尝试手动设置Page_IsValid,但它没有任何作用。帖子中的链接不再有效。但要点就在这里。:)@winner_joiner I修复了链接(&2个拼写错误)。谢谢你通知我。