2011-06-24 87 views
0

我正在写一个自定义的JavaScript验证脚本,从而我遍历名为“toggle”的div中的所有输入元素,并选择每个具有名为'required'的类,如果该元素的值为空字符串(空)然后我需要创建包含错误消息的标签,并将它们放置在文本框旁边。Javascript自定义验证

下面的代码:

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); 
       } 
      } 
     } 

程序的执行以及(与警报测试它()),直到下面一行:

var labelErr = document.CreateElement('label'); 

问题出在哪里?

+0

你有很多低于很好的答案的。他们中的一个能帮助你吗?考虑将其中一个标记为答案。 –

回答

0

document.createElement document.CreateElement

MDC链接:document.createElement

更新:你应该访问labelinnerHTML而不是value

的片段

var labelErr = document.createElement('label'); 
labelErr.id = "ErrMsg" + i; 
labelErr.innerHTML= errmsg; 
var parent = inputArray[i].parentNode; 
parent.appendChild(labelErr); 
+0

好吧,那经历了。现在我创建一个标签后,我似乎无法为其'id'属性添加值? – Johan

1

您可以使用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> 

我建议请试试这个...

+0

哈,我不允许使用内置的验证控件。我的上级告诉他们他们是为业余的:) - 没有进攻tho ..我去了他们,因为他 – Johan

+0

标签转换成跨度为html,所以请试试这个var labelErr = document.createElement('span'); –

0

这不是直接回答你的问题,而是你的上级去不同预建的验证方法?我偏好FlowPlayers jQuery based validator。非常简单的设置:

$("#myform").validator(); 

我已经写了几个验证框架在过去。我终于厌倦了重新发明轮子。

0

愿我的建议是:

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" 
    } 
    } 
}