C# 使用Jquery来防止;“提交”按钮;如果字段留空,则从过帐数据中删除
所以我在这里为我的网络项目设置了一个小的注册区域。用户输入各种字符串,如“用户名”、“密码”等 我已经设置了一些代码,以防止数据库中出现重复的用户名或密码。如果“Password”和“Repeat Password”字段不匹配,我也有一个防护装置 我现在想做的是- 1:如果用户试图在字段为空时提交数据,则不会发布 2:显示“字段不能为空”div,我已将“显示:无”分配给该div 我一直在考虑为输入字段分配一个“Required”类,并使用一些代码,比如 如果==null 显示 返回false//防止其余功能(提交登录/注册按钮)启动 遇到猥亵的问题。无论如何这是我到目前为止所拥有的C# 使用Jquery来防止;“提交”按钮;如果字段留空,则从过帐数据中删除,c#,jquery,html,C#,Jquery,Html,所以我在这里为我的网络项目设置了一个小的注册区域。用户输入各种字符串,如“用户名”、“密码”等 我已经设置了一些代码,以防止数据库中出现重复的用户名或密码。如果“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的标准验证器默认包括客户端验证!