Solved

Validate textbox with client generated button

Posted on 2016-09-19
6
86 Views
Last Modified: 2016-09-20
I have button like this.  It allows comma separated values.  
How can I check to make sure that no individual value is more than 4 characters?
Ideally, I'd like to check that all the values are alpha numeric, but I don't know how to use REGEX in JavaScript.


                   <input id="Button2" type="button" value="Add" 
                    onclick="Javascript:AddItemFromTextBox('ctl00_ContentPlaceHolder1_lstFileNameCode','ctl00_ContentPlaceHolder1_cmbFileNameCode','ctl00_ContentPlaceHolder1_hidfilenamecodecmb','ctl00_ContentPlaceHolder1_hidfilenamecodelst','ctl00_ContentPlaceHolder1_txtFileNameCode2')"; />

Open in new window


It's validated like this.

function AddItemFromTextBox(ListBox,DropDownBox,hiddenCmb,hiddenLst,TextBox) 
 { 

    var Lbox = document.getElementById(ListBox);
    var cmbBox = document.getElementById(DropDownBox);
    var hidcmb=document .getElementById (hiddenCmb);
    var hidlst=document .getElementById (hiddenLst);
    var Tbox = document.getElementById(TextBox); 
    var myStringArray=SplitTheString(Tbox.value);
    //if (SplitTheString(Tbox.value) != null)
    if (myStringArray !=null)
    {       
        for (var i = 0; i < myStringArray.length; i++) 
        {
            var newOption = window.document.createElement('OPTION');
            newOption.text = myStringArray[i];
            newOption.value = myStringArray[i];
            if (myStringArray[i] != "")
            {
                Lbox.options.add(newOption);
            }
        }
    }
    else
    {
        var newOption = window.document.createElement('OPTION');
        newOption.text = Tbox.value;
        newOption.value = Tbox.value;
        Lbox.options.add(newOption);
        Lbox.options.add(newOption);
    }
    persistOptionsListTextBox(Lbox,Tbox,hidcmb,hidlst);
    arrTexts = new Array();

    for(i=0; i<Lbox.length; i++) 
    {
     arrTexts[i] = Lbox.options[i].text;
    }
    Lbox.options.length = 0;
    arrTexts.sort();

    for(j=0; j<i; j++) 
    {
        var newOption = window.document.createElement('OPTION');
        newOption.text = arrTexts[j];
        newOption.value = arrTexts[j];

        Lbox.options.add(newOption);
    }
function SplitTheString(CommaSepStr) {
       var ResultArray = null; 
       var SplitChars = ',';
        if (CommaSepStr!= null) {
            
            if (CommaSepStr.indexOf(SplitChars) >= 0) 
            {
                ResultArray = CommaSepStr.split(SplitChars);
            }
            else if (CommaSepStr != "")
            {
                CommaSepStr+=","
                ResultArray=CommaSepStr.split(SplitChars);
            }
        }
       return ResultArray ;
    }

  function persistOptionsListTextBox(lstfiletypecode,txtfiletypecode,hidfiletypecodecmb,hidfiletypecodelst)
  {
        var optionsList = '';
        var myStringArray=SplitTheString(txtfiletypecode.value);
        //if (SplitTheString(Tbox.value) != null)
        if (myStringArray !=null)
        {       
            for (var i = 0; i < myStringArray.length; i++) 
            {
                 var optionText = myStringArray[i];
                 var optionValue = myStringArray[i];
                 optionsList += optionText + ':' + optionValue;

            }
        }
      if (hidfiletypecodecmb.value != "" && hidfiletypecodecmb.value.length <100)
      {
        hidfiletypecodecmb.value += ';' + optionsList;
      }
      if (hidfiletypecodecmb.value == "")
      {
        hidfiletypecodecmb.value = optionsList;
      }
      optionsList = '';
      for (var i=0; i<lstfiletypecode.options.length; i++)
      {
         var optionText = lstfiletypecode.options[i].text;
         var optionValue = lstfiletypecode.options[i].value;
       
         if ( optionsList.length > 0 )
         {
            optionsList += ';';
         }
         optionsList += optionText + ':' + optionValue;
      }
      if (hidfiletypecodelst.value != "" && hidfiletypecodelst.value.length <100)
      {
         //hidfiletypecodelst.value += ';' + optionsList;
         hidfiletypecodelst.value = optionsList;
      }
      if (hidfiletypecodelst.value == "")
      {
         hidfiletypecodelst.value = optionsList;
      }
 }
 }

Open in new window

0
Comment
Question by:AlHal2
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
6 Comments
 
LVL 10

Expert Comment

by:Paweł
ID: 41806231
I think your pattern can be ^([a-z|0-9]{0,4},\s?){3}[a-z|0-9]{0,4}$ it'll cover space before the commas

http://codepen.io/chooch/pen/EgNYVK?editors=1010

function test(){
 
  var re = new RegExp("^([a-z|0-9]{0,4},\\s?){3}[a-z|0-9]{0,4}$");
  
  var value = document.getElementById("input").value;
  
  alert(re.test(value));
}

Open in new window


<input id="input" type="text" value="sd4,23e4,23e,2e42"  />
<button onclick="test()">test</button>

Open in new window

0
 
LVL 35

Accepted Solution

by:
Terry Woods earned 500 total points
ID: 41806246
The match function returns an array of matches or null if no match.

Here's an example of testing a value against a regex, with a pattern that might suit your needs:
  var matches='1234,2a4,12f'.match(/^[a-z0-9]{1,4}(,[a-z0-9]{1,4})*$/i);
  if (matches === null) {
    alert('no match');
  } else {
    alert(matches[0]+" matched");
  };

Open in new window

0
 
LVL 35

Expert Comment

by:Terry Woods
ID: 41806248
Ha, I was a bit slow writing my code...
0
Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

 
LVL 35

Expert Comment

by:Terry Woods
ID: 41806252
@Pawel, your pattern is not quite correct actually: [a-z|0-9] allows a pipe character as a valid character (the pipe shouldn't be there - it's only used as an alternation operator when not in square brackets, which is I think what you were intending it to mean)...  allowing the space characters might be important though (I didn't allow for those)

Not sure how many values can be in the list, but Pawel's pattern has a limit of 4, whereas mine is unlimited.

Hope that helps anyway
0
 

Author Closing Comment

by:AlHal2
ID: 41806318
I modified it a bit, but thanks very much.

var matches = myStringArray[i].match(/^[A-Za-z0-9]{1,4}(,[A-Za-z0-9]{1,4})*$/i);
            if (matches === null)
            {
                alert(myStringArray[i]+" rejected");
            }
            else
            {
                //alert(matches[0] + " matched");
                //if (myStringArray[i] != "")
                if (myStringArray[i].length == 4)
                {
                    Lbox.options.add(newOption);
                }
                else
                {
                    alert(myStringArray[i] + " must be 4 characters");
                }
            };
0
 
LVL 10

Expert Comment

by:Paweł
ID: 41806813
good point; i misread, for some reason i got it into my head that alhal2 was looking to match 4 groups of 4 alpha numeric numbers. good catch on the extra pipe, regex is one of those things i use on occasion.
0

Featured Post

What Is Transaction Monitoring and who needs it?

Synthetic Transaction Monitoring that you need for the day to day, which ensures your business website keeps running optimally, and that there is no downtime to impact your customer experience.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article will give core knowledge of JavaScript and will head in to your first JavaScript program. I am Durvesh Naik and I am here to deal with this series of JavaScript. I will teach you JavaScript in part wise , as its quite boring to read big…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question