自己练习做个自动表单判断的代码,现存在一个问题,因为涉及到判断用户输入信息是否正确,有个提示信息,现在可以通过setErrmsg提示,正确后不能通过reErrmsg删除,有个想法,通过errid来设置每次插入的li的id,然后在根据这个标记在删除,现在看来技术存在很大问题,因为errid不同步貌似,哪位师傅帮忙一下,或有没有其它办法,谢谢。
<form>
<div>
<input id="input1" type="text" mtype="str:4:15">
<span>
<ul>信息插这里</ul>
</span>
这里的str:4:15代表str是处理字符串,最小4个,最长15个。
<input id="input2" type="text" mtype="str:4:15">
<span>
<ul>信息插这里</ul>
</span>
<input type="submit" value="submit">
</div>
</form>
$(function () {
var bool = true;
var aA = "[a-zA-Z]";
var aAs = "[a-zA-Z0-9_]";
var errc = "[~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]";
var errid = 0;
//var
$('form :input').keyup(function () {
var jqs = $("#" + $(this).attr("id")).attr("mtype");
var inValue = $(this).val();
var mtystr = jqs.split(":")[0].toLocaleUpperCase();
var minl = jqs.split(":")[1];
var maxl = jqs.split(":")[2];
var errmsg = "";
$(this).attr("maxlength", maxl);
var thisID = $(this).attr("id");
errid++;
if (mtystr === "STR") { //处理数据
var fi = new RegExp(aA + "+");
var re = new RegExp(aA + "+" + aAs + "*");
var err = new RegExp(errc);
var removeid;
var errmsg = "";
if (err.test(inValue)) {
alert(thisID);
setErrmsg(thisID, errid, "请不要输入特殊字符!");
bool = false;
} else {
reErrmsg(thisID, errid);
//bool = true;
}
if (!fi.test(inValue)) {
alert(thisID);
setErrmsg(thisID, errid, "此处首字符必须是字母!");
bool = false;
} else {
reErrmsg(thisID, errid);
//bool = true;
}
if (!re.test(inValue)) {
alert(thisID);
setErrmsg(thisID, errid, "请按照标准填写,首位是字母+数字形式!");
bool = false;
} else {
reErrmsg(thisID, errid);
}
if (inValue.length < minl || inValue.length > maxl) {
alert(thisID);
setErrmsg(thisID, errid, "输入值的长度要求至少" + minl + "个字符,最多" + maxl + "个字符。");
bool = false;
} else {
reErrmsg(thisID, errid);
}
} else if (mtystr === "INT") {
var intstr = "^[0-9]+$";
var ints = new RegExp(intstr);
if (!ints.test(inValue)) {
alert(thisID);
setErrmsg(thisID, errid, "请输入数字格式,且不能有小数点。");
bool = false;
} else {
reErrmsg(thisID, errid);
}
if (inValue.length < minl || inValue.length > maxl) {
alert(thisID);
setErrmsg(thisID, errid, "输入值的长度要求至少" + minl + "个字符,最多" + maxl + "个字符。");
bool = false;
} else {
reErrmsg(thisID, errid);
}
} else if (mtystr === "MAIL") {
var mailstr = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z])+$";
var mails = new RegExp(mailstr);
if (!mails.test(inValue)) {
alert(thisID);
setErrmsg(thisID, errid, "请输入正确的邮箱地址。");
bool = false;
} else {
reErrmsg(thisID, errid);
}
}
return bool;
});
$('form :submit').click(function () {
if (bool) {
return true;
} else {
return false;
}
});
function setErrmsg(obj, errid, errinfo) {//用于插入span里信息的函数
obj = $("#" + obj);
alert("obj=" + obj + " errid=" + errid + " errinfo=" + errinfo);
obj.next("span").find("ul").find("#" + errid).remove();
obj.next("span").find("ul").append("<li id=\"" + errid + "\">" + errinfo + "</li>");
}
function reErrmsg(obj, errid) { //用于从span里删除信息的函数
obj = $("#" + obj);
obj.next("span").find("ul").find("#" + errid).remove();
}
});