Javascript自定义验证
我正在编写一个自定义javascript验证脚本,在名为“toggle”的div中遍历所有输入元素,并选择每个元素中有一个名为“required”的类,如果元素的值是空字符串(空),那么我需要创建包含错误消息的标签,并将它们放在文本框旁边 代码如下:Javascript自定义验证,javascript,asp.net,validation,Javascript,Asp.net,Validation,我正在编写一个自定义javascript验证脚本,在名为“toggle”的div中遍历所有输入元素,并选择每个元素中有一个名为“required”的类,如果元素的值是空字符串(空),那么我需要创建包含错误消息的标签,并将它们放在文本框旁边 代码如下: function clientErrMsgs() { var container = document.getElementById("toggle"); var inputArray = container.get
function clientErrMsgs() {
var container = document.getElementById("toggle");
var inputArray = container.getElementsByTagName("input");
for (var i = 0; i < inputArray.length; i++) {
alert("");
if (inputArray[i].getAttribute("class") == "required" && inputArray[i].value == "") {
var errmsg = inputArray[i].getAttribute("data-errormessage");
var labelErr = document.CreateElement('label');
labelErr.id = "ErrMsg" + i;
labelErr.value = errmsg;
var parent = inputArray[i].parentNode;
parent.appendChild(labelErr);
}
}
}
问题出在哪里?它的
document.createElement
不是document.createElement
MDC链接:
更新:您应该访问标签的innerHTML
,而不是值
片段
var labelErr = document.createElement('label');
labelErr.id = "ErrMsg" + i;
labelErr.innerHTML= errmsg;
var parent = inputArray[i].parentNode;
parent.appendChild(labelErr);
您可以使用asp.net自定义验证程序来执行此操作
我给你举个例子,如何做到这一点
<asp:CustomValidator ID="CustomValidator1" runat="server"
ErrorMessage="Sms length is exceeding over 160."
ClientValidationFunction="validateLength" ControlToValidate="txtSmsMessage"
SetFocusOnError="True" ValidationGroup="add">*</asp:CustomValidator>
<script language="javascript" type="text/javascript">
function validateLength(oSrc, args)
{
args.IsValid = (args.Value.length < 160);
}
</script>
*
函数validateLength(oSrc、args)
{
args.IsValid=(args.Value.length<160);
}
我建议您试试这个…我有一些东西可以使用:
标签没有值属性这不是对您问题的直接回答,但您的上级会选择不同的预构建验证方法吗?我偏爱你。设置非常简单:
$("#myform").validator();
我在过去写过几个验证框架。我终于厌倦了重新发明轮子。我可以建议如下:
function clientErrMsgs() {
var container = document.getElementById("toggle");
var inputArray = container.getElementsByTagName("input");
for (var inp, i=0, n=inputArray.length; i<n; i++) {
inp = inputArray[i];
if (inp.getAttribute("class") === "required") {
var errMsg = container.getElementById("ErrMsg"+i);
if (!errMsg) {
errMsg = document.createElement('span');
errMsg.id = "ErrMsg" + i;
errMsg.innerHTML= inp.getAttribute("data-errormessage");
inp.parentNode.appendChild(errMsg);
}
errMsg.style.display= (inp.value === "")?"":"none"
}
}
}
函数clientermsgs(){
var container=document.getElementById(“切换”);
var inputArray=container.getElementsByTagName(“输入”);
对于(var inp,i=0,n=inputArray.length;iokay,已经通过了。现在,在我创建了一个标签之后,我似乎无法为它的'id'属性添加值?哈,我不允许使用内置的验证控件。我的上级告诉我它们是为业余爱好者准备的:)没有冒犯,我去了他们,HeHelp转换成SPAN到HTML,所以请试试这个VaLabelRe=文档。CealEngEnter(‘SPAN’);下面有很多很好的答案。他们中有一个帮助你吗?考虑把其中一个标记为答案。请参考这个URL进行自定义验证。
function clientErrMsgs() {
var container = document.getElementById("toggle");
var inputArray = container.getElementsByTagName("input");
for (var inp, i=0, n=inputArray.length; i<n; i++) {
inp = inputArray[i];
if (inp.getAttribute("class") === "required") {
var errMsg = container.getElementById("ErrMsg"+i);
if (!errMsg) {
errMsg = document.createElement('span');
errMsg.id = "ErrMsg" + i;
errMsg.innerHTML= inp.getAttribute("data-errormessage");
inp.parentNode.appendChild(errMsg);
}
errMsg.style.display= (inp.value === "")?"":"none"
}
}
}