Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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
C# 使用Jquery来防止;“提交”按钮;如果字段留空,则从过帐数据中删除_C#_Jquery_Html - Fatal编程技术网

C# 使用Jquery来防止;“提交”按钮;如果字段留空,则从过帐数据中删除

C# 使用Jquery来防止;“提交”按钮;如果字段留空,则从过帐数据中删除,c#,jquery,html,C#,Jquery,Html,所以我在这里为我的网络项目设置了一个小的注册区域。用户输入各种字符串,如“用户名”、“密码”等 我已经设置了一些代码,以防止数据库中出现重复的用户名或密码。如果“Password”和“Repeat Password”字段不匹配,我也有一个防护装置 我现在想做的是- 1:如果用户试图在字段为空时提交数据,则不会发布 2:显示“字段不能为空”div,我已将“显示:无”分配给该div 我一直在考虑为输入字段分配一个“Required”类,并使用一些代码,比如 如果==null 显示 返回false//

所以我在这里为我的网络项目设置了一个小的注册区域。用户输入各种字符串,如“用户名”、“密码”等

我已经设置了一些代码,以防止数据库中出现重复的用户名或密码。如果“Password”和“Repeat Password”字段不匹配,我也有一个防护装置

我现在想做的是-

1:如果用户试图在字段为空时提交数据,则不会发布

2:显示“字段不能为空”div,我已将“显示:无”分配给该div

我一直在考虑为输入字段分配一个“Required”类,并使用一些代码,比如

如果==null 显示 返回false//防止其余功能(提交登录/注册按钮)启动

遇到猥亵的问题。无论如何这是我到目前为止所拥有的

$("#SubmitButton").click(function () { //Click Submit
            if ($("#PassReg").val() != ($("#PassConfirm").val())) { //Both fields match
                $("#PasswordMismatch").show(); //Or this div shows you messed up
                return false; //And nothing else fires
            }


            $.post("login/register", $('#ConfirmPanel *').serialize(), function (result) {

                if (result == 2) //Json return from C#
                    $("#UsernameInUse").show(); //Shows an error div
                else if (result == 3) //Json return from C#
                    $("#EmailInUse").show(); //Shows an error div
                else {
                    $("#ConfirmPanel").dialog('close'); //Closes the registration dialog
                }

            });
        });

有什么想法吗?起初我认为我不能用“类”来标记一个输入字段,然后将该输入字段与空值进行比较。不过我不知道

由于您正试图使用
$提交
表单
。post
您应该停止表单提交的默认行为,即从提交按钮单击处理程序返回
false

$("#SubmitButton").click(function () { //Click Submit
            if ($("#PassReg").val() != ($("#PassConfirm").val())) { //Both fields match
                $("#PasswordMismatch").show(); //Or this div shows you messed up
                return false; //And nothing else fires
            }


            $.post("login/register", $('#ConfirmPanel *').serialize(), function (result) {

                if (result == 2) //Json return from C#
                    $("#UsernameInUse").show(); //Shows an error div
                else if (result == 3) //Json return from C#
                    $("#EmailInUse").show(); //Shows an error div
                else {
                    $("#ConfirmPanel").dialog('close'); //Closes the registration dialog
                }

            });

            return false;
        }); 

您应该在表单上使用
.submit()
jquery事件处理程序,而不是
。单击按钮上的()。如果需要,则返回false以防止正常表单提交。

防止表单提交的jQuery方法是使用
preventDefault()
,如:

$("#SubmitButton").click(function (event) { //Click Submit
        if ($("#PassReg").val() != ($("#PassConfirm").val())) { //Both fields match
            $("#PasswordMismatch").show(); //Or this div shows you messed up
            event.preventDefault(); //And nothing else fires
            return;
        }

        //...
});
但是,由于您在验证通过时异步发布表单,因此您真正需要的是以下内容:

$("#SubmitButton").click(function (event) { //Click Submit
        event.preventDefault();  //we don't ever want to allow the default behavior
        if ($("#PassReg").val() != ($("#PassConfirm").val())) { //Both fields match
            $("#PasswordMismatch").show(); //Or this div shows you messed up
            return;
        }

        //post the form
});
您建议的其余内容(使用类标记每个必需的输入字段,检查它们是否都是空字符串)是合理的

请注意,由于您绑定的是按钮的
单击
事件,而不是表单的
提交
事件,因此用户完全可以提交表单,而无需单击按钮并触发验证代码。例如,从任何一个文本字段按return

还请注意,在这种情况下,您可能会发现在表单上使用传统的
onsubmit
指令更方便,如:

<form onsubmit="validateAndPost(); return false;">
    <!-- inputs and buttons, etc. -->
</form>

<script>
    function validateAndPost() {
        if ($("#PassReg").val() != ($("#PassConfirm").val())) { //Both fields match
            $("#PasswordMismatch").show(); //Or this div shows you messed up
            return;
        }

        //post the form
    }
</script>

函数validateAndPost(){
如果($(“#PassReg”).val()!=($(“#PassConfirm”).val()){//两个字段都匹配
$(“#PasswordMismatch”).show();//或者这个div显示您搞砸了
返回;
}
//张贴表格
}

示例:

我很欣赏您希望使用jquery,但是我建议使用普通的ASP.NET控件。除了使页面更加简洁和易于维护外,它还允许您非常简单地调用服务器端验证:

public void submitbutton_click(object sender, EventArgs args){
    Page.Validate();
    if(Page.IsValid){
        doStuff();
    }
}
请不要重新发明轮子,也不要相信浏览器会按照您认为的方式运行。

使用此功能-

$(document).on('click', '#SubmitButton', function () { 
`enter code here`
});

忽略关于“if==null.show”的部分。我没有使用正确的代码标签,它被破坏了。基本上,我想选择“Required”类,将class.val与null进行比较,如果为null,则显示一个error div并终止submit函数;使用和。是的,一定要使用
.submit()
而不是
。单击()
,以防它们以其他方式触发提交!谢谢你的信息。非常感谢。我100%同意服务器端验证在这里是关键的,但这只是一些“无空白字段”的废话。我会在项目生命后期担心最终产品。添加RequiredFieldValidator比问问题花费的时间要少……客户端验证应该总是在服务器端之外,但它会产生更好的用户体验,特别是在低速连接上。ASP.NET的标准验证器默认包括客户端验证!