AlHal2
asked on
Validate textbox with client generated button
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.
It's validated like this.
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')"; />
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;
}
}
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Ha, I was a bit slow writing my code...
@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
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
ASKER
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");
}
};
var matches = myStringArray[i].match(/^[
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");
}
};
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.
http://codepen.io/chooch/pen/EgNYVK?editors=1010
Open in new window
Open in new window