jQuery.validator.addMethod("isMobileExist", function (value, element) {
var flag = false;
ns.ajax({
url: "/customer/checkMobile",
data: { mobile: value },
async: false,
success: function (result) {
flag = result;
}
});
return flag;
}, "手机号码已存在!");
这段代码的校验,我想修改为ajax请求返回1是通过,2是不通过提示手机号码已存在,3是不通过显示跟踪按钮点击可跳转
根据需求,我们将修改代码实现以下功能:
- 当Ajax返回1时,验证通过
- 当返回2时,显示"手机号码已存在"
- 当返回3时,显示跟踪按钮并支持跳转
以下是修改后的完整代码:
jQuery.validator.addMethod("isMobileExist", function (value, element) {
// 存储验证结果
let resultStatus = null;
// 发送AJAX请求
$.ajax({
url: "/customer/checkMobile",
type: "POST",
dataType: "json",
data: { mobile: value },
async: false, // 同步请求确保验证器能正确获取结果
success: function (response) {
resultStatus = response.status;
// 处理返回3的情况:显示跟踪按钮
if (response.status === 3) {
const trackBtn = $('<button class="btn-track">查看跟踪</button>');
trackBtn.click(function() {
// 这里替换为你的实际跳转逻辑
window.location.href = `/customer/track/${value}`;
});
// 插入按钮到指定容器
$("#mobileAddress").html(trackBtn);
}
},
error: function() {
// 处理请求失败情况
resultStatus = 0;
}
});
// 根据状态返回验证结果
switch (resultStatus) {
case 1: // 验证通过
return true;
case 2: // 手机号已存在
return false;
case 3: // 需要显示跟踪按钮
return false;
default: // 其他情况视为不通过
return false;
}
}, function(params, element) {
// 动态返回错误信息
return (params === 3)
? "手机号已存在,可查看跟踪记录"
: "手机号码已存在!";
});
使用说明:
- AJAX返回格式要求:
{
"status": 1, // 1=通过, 2=存在, 3=存在且显示跟踪
// 其他数据...
}
- HTML需要添加的容器:
<!-- 用于显示跟踪按钮 -->
<div id="mobileAddress"></div>
- CSS样式建议:
.btn-track {
padding: 4px 10px;
background: #4285f4;
color: white;
border: none;
border-radius: 3px;
cursor: pointer;
margin-left: 10px;
font-size: 12px;
}
功能说明:
- 三种状态处理:
- 返回1:验证通过
- 返回2:显示默认错误信息
- 返回3:显示带按钮的错误信息,并渲染跟踪按钮
- 跟踪按钮功能:
- 按钮点击跳转到跟踪页面
- 使用手机号作为URL参数
- 按钮动态插入到#mobileAddress容器
- 错误消息优化:
- 状态3返回专属错误信息
- 其他失败情况返回默认信息
注意:实际部署时需要将window.location.href
中的跳转URL替换为你的真实跟踪页面地址,并确保后端API返回正确的状态码。