Javascript自定义验证

Javascript custom validation

本文关键字:验证 自定义 Javascript      更新时间:2023-09-26

我正在编写一个自定义的javascript验证脚本,通过该脚本,我遍历名为"toggle"的div中的所有输入元素,并选择每个具有名为"required"的类的元素。如果元素的值是空字符串(空),则我需要创建包含错误消息的标签,并将它们放在文本框旁边。

这是代码:

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

程序执行良好(用alert()测试),直到出现以下行:

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

问题出在哪里?

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

我建议你试试这个。。。

我使用了

http://jsfiddle.net/ahallicks/kxPeN/2/

标签没有值属性

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

这不是对您问题的直接回答,但您的上级会选择不同的预构建验证方法吗?我偏爱FlowPlayers基于jQuery的验证器。设置非常简单:

$("#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"
    }
  }
}