我有一个简单的“用户注册”页面,其中包含“用户名”字段以及其他字段。我的要求是'用户名'不应该是重复的,为此我写了一个ajax函数,检查用户名是否重复,如果它是重复的,它会在'username'字段下面打印一条错误消息,这个流程工作正常,出现问题当我点击提交按钮,即使使用'用户名不唯一'消息,我也可以保存页面[虽然我可以捕获异常并相应地处理它]。我知道这种情况正在发生,因为我只是显示错误消息而不是将错误绑定到'username'字段。如何将错误消息绑定到用户名字段(如果出现用户名重复错误),以便在删除此错误之前不提交页面?
代码如下
1.JQuery
function check_username(){
$("#usernamentavlberror").empty();
var developerData = {};
developerData["userName"] = $("#username").val();
$.ajax({
type: 'POST',
contentType : "application/json",
url: '/checkForDuplicateUsername',
data : JSON.stringify(developerData),
dataType : 'json',
success: function(data){
if(data == "userNameExists"){
alert("inside user")
$("#usernamentavlberror").html("UserName Not Available");
}
else {
//do perform other actions like displaying error messages etc.,
}
},
error : function(data) {
alert("error---"+data);
}
});
}
<form action="#" th:action="@{/signup}" th:object="${user}" method=post>
<div class="form-group input-group">
<div class="input-group-prepend">
<span class="input-group-text"> <i class="fa fa-user"></i>
</span>
</div>
<input name="username" th:field="*{username}" class="form-control" placeholder="User Name" type="text" id="username">
</div>
<div class="form-group input-group" th:if="${#fields.hasErrors('username')}" th:errors="*{username}"></div>
<div class="form-group input-group" id="usernamentavlberror"></div>
.
.
</form>```
“如何将错误消息绑定到用户名字段(如果出现用户名重复错误),以便在删除此错误之前不提交页面?”
您必须了解在服务器端处理Thymeleaf模板,因此您首先必须提交页面才能收回错误。但这并不意味着你不能添加一些很好的功能,如你正在尝试的功能,并让两个世界一起工作,以获得更好的用户体验。