Splitting and Checking for a character RESOLVED
Ok, a coursemate of mine is trying to do the following.
He has an input box where the user types their surname.
But if the user types their surname as
O'hara or Smith-taylor
then he needs to correct it, so its becomes O'Hara and Smith-Taylor.
so if the name contains a "-" or a " ' " then it needs to split it at that point and make the next character a Capital.
the code he has so far is
Code:
if (!nameSplit[0].match(lnameCheck) || !nameSplit[1].match(lnameCheck)) {
alert("Correct lname format is: Smith OR Oh-Hara")
document.forms[0].submit.disabled = true
document.forms[0].lname.focus()
return false
}
and he said has to be something with
hope this is clear as i know nothing bout JavaScript my mate has no internet access at the moment.
Re: Splitting and Checking for a character
If "match" is the string containing the surname
Code:
if (!name.match(/([A-Z][a-z]*)/) ||
!name.match(/([A-Z][a-z]*)\-([A-Z][a-z]*)/) ||
!name.match(/([A-Z][a-z]*)'([A-Z][a-z]*)/))
{
alert('Your surname may be incorrectly capitalised, check the capitalisation')
}
Or similar.
Re: Splitting and Checking for a character
Try this when the textbox loses focus the propercase function is called -
Code:
<html>
<head>
<title></title>
<script type="text/javascript">
Function ProperCase(obj){
var strReturn_Value="";
var sStr=obj.value;
var iTemp=sStr.length;
if(iTemp!=0){
var UcaseNext=false;
strReturn_Value += sStr.charAt(0).toUpperCase();
alert(strReturn_Value);
for(var iCounter=1;iCounter < iTemp;iCounter++){
if(UcaseNext == True){
strReturn_Value += sStr.charAt(iCounter).toUpperCase();
}else{
strReturn_Value += sStr.charAt(iCounter).toLowerCase();
}
var iChar=sStr.charCodeAt(iCounter);
if(iChar == 32 || iChar == 45 || iChar == 46 || iChar == 13 || iChar == 10){
UcaseNext=true;
}else{
UcaseNext=false;
}
if(iChar == 99 || iChar == 67){
if(sStr.charCodeAt(iCounter-1)==77 || sStr.charCodeAt(iCounter-1)==109){
UcaseNext=true;
}
}
if(iChar == 39){
if(iCounter >= 1){
if(strReturn_Value.charCodeAt(iCounter-1) == 79){
UcaseNext = true;
}
}
}
}
obj.value=strReturn_Value;
}else{
obj.value=sStr;
}
}
</script>
</head>
<body>
<form name="myFrm" id="myFrm">
<input type="text" id="txtname" name="txtname" value="harris-jones" onblur="ProperCase(this);">
</form>
</body>
</html>