开发者

Javascript custom validation

开发者 https://www.devze.com 2023-03-14 23:12 出处:网络
I\'m writing a custom javascript validation script whereby i iterate through all input elements in a div named \'toggle\' and select each that has a class named \'required\' and if the value of the el

I'm writing a custom javascript validation script whereby i iterate through all input elements in a div named 'toggle' and select each that has a class named 'required' and if the value of the element is an empty string (empty) then i need to create labels containing the error message and place them right next to the textbox.

Here's the code:

function clientErrMsgs开发者_JAVA技巧() {
        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);
                }
            }
        }

the program executes well (tested it with alert()) up until the following line:

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

Where is the problem?


you can use asp.net custom validator to do this

i am giving you an example, how to do this....

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

i suggest please try this...


I got things working with:

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

labels don't have a value attribute


Its document.createElement not document.CreateElement

MDC link : document.createElement

Update: you should access the innerHTML of the label and not the value

The snippet

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


This is not a direct answer to your question, but would your superior go for a different pre-built validation method? I'm partial to FlowPlayers jQuery based validator. Very simple to setup:

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

I've written several validation frameworks in the past. I finally got tired of reinventing the wheel.


May I suggest this:

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号