Hi!!
i need to write a function that counts the number of names seperated by a '/'
for example if i write
aashish/ankush in a field
the number returned should be 2
thanks....
Hi!!
i need to write a function that counts the number of names seperated by a '/'
for example if i write
aashish/ankush in a field
the number returned should be 2
thanks....
Hi
You can split the string with '/' and then you can get the length some thing like this
var names = "aashish/ankush";
var namesList = names.split('/');
namesList.length will return the count as 2
Regards
Anish
Hi
You can split the string with '/' and then you can get the length some thing like thisvar names = "aashish/ankush";
var namesList = names.split('/');namesList.length will return the count as 2
Regards
Anish
thanks...
the second part of the problem is , that now i have to write a function
where in i can enter only 9 digit numbers and after every ninth digit a "/" is automatically entered
the number of numbers i can enter is the count returned by the split function
You can try this code -->
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>Test Page</title>
<style type="text/css">
/* <![CDATA[ */
html, body {
background-color : #f0f0f0;
border : none;
color : #696969;
font : normal normal normal 90%/1.6 Verdana, Tahoma, Helvetica, Arial, sans-serif;
height : auto;
min-height : 600px;
min-width : 800px;
text-align : center;
vertical-align : baseline;
width : auto; }
h2 {
background-color : #ccc;
border-bottom : 1px solid #708090;
border-top : 1px solid #708090;
font : 700 160% "Bernard MT Condensed";
line-height : 2ex;
margin-top : 0;
min-height : 2ex;
padding : .100em 0em .100em 1em;
white-space : nowrap; }
div {
border : none;
margin : 0%;
padding : 0%; }
div#main {
margin : 0% auto;
text-align : left;
height : 100%;
overflow : hidden;
width : 98%; }
form {
background-color : #ccc;
padding : 1em;
border : 1px solid;
width : 30%; }
label, input {
display : block; }
input {
margin-bottom : .500em; }
div.tube {
border : 1px solid #ccc;
height : 600px;
margin : 1% auto 1% auto;
padding : 1.200em; }
/* ]]> */
</style>
<script type="text/javascript">
// <![CDATA[
var loose, num;
var splitTheNames;
var whatNames, thisNames, extractNames;
loose = Boolean();
splitTheNames = function() {
extractNames = function( whatNames ) {
joinNumbers = function( whatNames ) {
loose = 1; // Set this to "0" if you want to apply strict validation to the number field.
num = new RegExp();
setting = num.compile(("^\\d{" + (( loose ) ? "9," + (( 9 ) * whatNames.length ) : ( 9 * whatNames.length )) + "}$"));
thisNumbers = (( document.getElementById ) ? document.getElementById("numbers") : document.all.numbers );
if ( !setting.test( thisNumbers.value )) {
alert("You must provide atleast a minimum characters of " + (( loose ) ? "9 or a maximum of " + (( 9 ) * whatNames.length ) + " characters long" : (( 9 ) * whatNames.length )) + " and must be a number.");
thisNumbers.value = "";
return false;
}
numArray = thisNumbers.value.match(/(\d{9})/g);
thisNumbers.value = numArray.join("/");
};
label = (( document.getElementById ) ? document.getElementById("label1") : document.all.label1 );
label.innerHTML = "";
try {
txt = document.createTextNode( "Number Entry: " );
iWidth = document.createAttribute("style");
iWidth.nodeValue = "width : 100%";
input = document.createElement("input");
input.type = "text";
input.id = "numbers";
input.name = "numbers";
input.value = "";
input.onchange = function() { joinNumbers( whatNames );
};
input.setAttributeNode( iWidth );
label.appendChild( input );
label.insertBefore( txt, input );
} catch( e ) {
label.innerHTML = 'Number Entry: <input type="text" id="numbers" name="numbers" value="" style="width : 100%" onchange="joinNumbers(' + whatNames + ');" />\n';
}
};
thisNames = (( document.getElementById ) ? document.getElementById("names") : document.all.names );
whatNames = thisNames.value.split(/[\,\/\s]+/); // Names can be splitted either by a ( space/backslash/comma ).
if ( whatNames.length >= 1 ) {
extractNames( whatNames );
}
};
// ]]>
</script>
</head>
<body>
<div id="main">
<div class="tube">
<h2>JavaScript Live DEMO!</h2>
<form id="frm" action="#" onsubmit="return false;">
<div>
<label for="names">Name Entry: <input type="text" id="names" name="names" value="" style="width : 100%;" onchange="splitTheNames();" /></label>
<label id="label1" for="numbers"></label>
</div>
</form>
</div>
</div>
</body>
</html>
Just be careful when you modify this code...
I forgot to include some backSlash in line #88:
simply change the entire line to this : thisNumbers.value = numArray.join("/") + "/";
This can easily be done using the split() method.
Here is an example:
function splitNames(names) {
return names.split("/").length;
}
var names = "aashish/ankush";
alert("There are " + splitNames(names) + " names in the names list.");
The split()
function has one parameter, separator
, which defines the character(s) that you want to divide the text between. You could change this to anything, such as #*# so that your names string is:
aashish#*#ankush
hi @ essential...
thanks for all the effort...........
but your code always seems so compliacted to me...
i am jus a newbie :(
my fault.........
well i wrote this, to insert a / after a number as many times as the value of countname...
var count=0
function countrelease()
{
//alert("count name is " + countname )
var strname = document.forms[0].RELEASE.value;
var length = strname.length
length=length-9
if(count != countname)
{
if (length % 10 == 0)
{
strname=strname + "/"
document.forms[0].RELEASE.value= strname;
count=count+1
}
}
else
{
event.returnValue = false;
}
//break;
}
the problem is if countname is 2
i can type 123456789/987654321/1
where as i want the output to be
123456789/987654321
i am calling this function on keypress event !
The first code that i've provided is a cross-browser script. This moded (or simplified) version of the script, is based on the method's that you have used, in your last posted code.
All codes is as follows:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>Test Page</title>
<style type="text/css">
/* <![CDATA[ */
html, body {
background-color : #f0f0f0;
border : none;
color : #696969;
font : normal normal normal 90%/1.6 Verdana, Tahoma, Helvetica, Arial, sans-serif;
height : auto;
min-height : 600px;
min-width : 800px;
text-align : center;
vertical-align : baseline;
width : auto; }
input label { display : block; }
input { margin-top : .200em; }
h2 {
background-color : #ccc;
border-bottom : 1px solid #708090;
border-top : 1px solid #708090;
font : 700 160% "Bernard MT Condensed";
line-height : 2ex;
margin-top : 0;
min-height : 2ex;
padding : .100em 0em .100em 1em;
white-space : nowrap; }
div {
border : none;
margin : 0%;
padding : 0%; }
div#main {
margin : 0% auto;
text-align : left;
height : 100%;
overflow : hidden;
width : 98%; }
div.tube {
border : 1px solid #ccc;
height : 600px;
margin : 1% auto 1% auto;
padding : 1.200em; }
/* ]]> */
</style>
<script type="text/javascript">
// <![CDATA[
var splitTheNames;
splitTheNames = function() {
numArray = [];
strname = document.forms.myForm.names.value;
num = document.forms.myForm.numbers.value;
strname = strname.split(/[\/\s,]+/);
extractNum = parseInt( num.length / 9 );
if ( extractNum <= strname.length ) {
for ( var i = 0; i < extractNum; i++ ) {
numArray[ i ] = num.match(/\d{9}/ig)[ i ]; document.forms.myForm.numbers.value = numArray.join("/") + "/";
} return true;
} else {
alert( "Numbers of characters must not exceed to " + ( strname.length * 9 ) + "." );
document.forms.myForm.numbers.value = "";
return false;
}
};
// ]]>
</script>
</head>
<body>
<div id="main">
<div class="tube">
<h2>JavaScript Live Demo</h2>
<form id="myForm" action="#" onsubmit="return false"
<div>
<label for="names">Name: <input type="text" id="names" name="names" size="30" onkeypress="splitTheNames();" /></label><br />
<label for="numbers">Numbers: <input type="text" id="numbers" name="numbers" size="30" /></label></div>
</form>
</div>
</div>
</body>
</html>
Just use the below script:
function pad()
{
var txt=document.getElementById('<%= txt.ClientID %>');
if(txt.value.replace(/\//g,"").length%2==0 && txt.value.length>0)
txt.value=txt.value+'/';
}
<asp:TextBox runat="server" ID="txt" onkeypress="pad()"></asp:TextBox>
Here i showed how you can add pad / after each 2 character. Modify in your way.
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.