Click to See Complete Forum and Search --> : number + string = ? HELP!
lting
02-22-2004, 06:55 AM
i have a value 008, when i click the button it plus 1 to the 008 and become 009 .. how to do it?
the function look like this
function foo(mynumber)
{
newnumber = parseInt(mynumber) + 1;
document.form.txtnewnumber.value = newnumber;
}
somehow ths function does plus 1 to the 008, but the results is 9 not 009 ... i want it to become 009 .. and what if the number start with M01, can i plus one so it becomes M02 ..
i want the results to be like this, when the function is call
001 + 1 = 002 instead of 2;
009 + 1 = 010 instead of 0010;
M01 + 1 = M02;
M09 + 1 = M10 instead of M010;
S012M01 + 1 = S012M02 ....
can anyone help me pls ...
olerag
02-22-2004, 08:44 AM
The first thing that comes to mind is to keep your integer
separate from the string format until the final display.
Prior to the final display, test the integer value and
adjust the string appropriately, such as..
var strFormat = "SSTTV12";
var intVal = "5";
if (intVal < 10)
alert("Value: " + strFormat + "00" + intVal);
else
alert("Value: " + strFormat + "0" + intVal);
You can even "prototype" the functionality so the call
(myFormat()) could look something like...
var myVal = 35;
myVal.myFormat();
Others might prefer to handle this via RegExp.
steelersfan88
02-22-2004, 02:49 PM
The following code is bulky and probably can be condensed. It takes the number, validates it to make sure it can add one, then checks for numerical values. If it finds one, it will add necessary zeroes and 1 and return the number. If not, it will take several substrings to build the correct number.
ERRORS
* NOTE: If m79 is entered, m80 returns. If m799 is entered, m7100 returns. Therefore, I will try and fix it and edit later!
* NOTE #2: Negative Numbers (-#) will return correctly, -6 returns -5; however, m-5 returns m-6.
END ERRORS
Probably the best its gonna get for now , but it can get better:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>My Program</title>
<script language="Javascript" type="text/javascript">
function isNumeric(theNum) {
if((theNum.charCodeAt(0) >= 48 && theNum.charCodeAt(0) <=57) || theNum.charCodeAt(0) == 45) {
return 0
}
return 1
}
function addOne(mynumber) {
var check = "";
var thereturn = ""
for(var j=0;j<mynumber.length;j++) {
check = mynumber.substr(j,1)
thereturn = isNumeric(check)
if(thereturn == 1) {
break;
}
}
if(thereturn == 0) {
var temp = "";
var newnumber = parseInt(mynumber - -1);
var len = mynumber.length - newnumber.toString().length;
for(var i=0;i<len;i++) {
temp = temp +"0";
}
newnumber = temp + newnumber + ""
}
else {
var newnumber = mynumber.substr(mynumber.length - 1,1)
newnumber++
if(newnumber >= 10) {
newnumber -= 10
var newtemp = mynumber.substring(0,mynumber.length - 1)
var newtemp2 = newtemp.substr(newtemp.length - 1,1)
newtemp2++
newnumber = newtemp.substr(0,newtemp.length -1) + newtemp2 + 0
}
else {
newnumber = mynumber.substring(0,mynumber.length - 1) + newnumber
}
}
return newnumber
}
function isOK(mynumber) {
document.myForm.newNum.value = ""
if(mynumber.substr(mynumber.length - 1,1) == 9 && isNumeric(mynumber.substr(mynumber.length - 2,1)) == 1) {
alert("Number invalid")
}
else if(isNumeric(mynumber.substr(mynumber.length - 1,1)) == 1) {
alert("Number invalid")
}
else {
var sometemp = 0
var count = 0
var correct = 0
for(var k=mynumber.length-1;k>=-1;k--) {
if(isNumeric(mynumber.substr(k,1)) == 1 && count * 9 == sometemp) {
correct = 1
break;
}
sometemp += parseInt(mynumber.substr(k,1))
count++
}
if (correct == 0) {
document.myForm.newNum.value = addOne(mynumber)
}
else {
alert("Number Invalid")
}
}
return false;
}
</script>
</head>
<body>
<form name="myForm" onsubmit="return isOK(document.myForm.theNum.value)" method="post">
<input type="text" name="theNum">
<input type="submit" value=" + 1 = ">
<input type="text" name="newNum">
</form>
</body>
</html>
steelersfan88
02-23-2004, 04:12 PM
it would be nice to know how it turned out
lting
02-23-2004, 06:52 PM
thanks for the help ... i just was away for the last few days ... so i will test it now. thanks :)
lting
02-23-2004, 06:54 PM
emm regarding the errors notes written...
the error no.2 regarding the negative number, is ok for that, because negative number won't exist in my web... but i greatly appreciate it, if you can fix this error also :) i am willing to learn :P
lting
02-23-2004, 07:23 PM
it works NICE!!!!!!!!!!! :) but still can't solve the M799 problem ..
and emm If it reach like M99 , it gives me invalid number ..
is it possible that when it reach M99, it gives me M100 instead of invalid number ...
?
Pittimann
02-24-2004, 12:45 AM
Hi!
A little modification using a part of steelersfan88's code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>My Program</title>
<script language="Javascript" type="text/javascript">
function isNumeric(theNum) {
if((theNum.charCodeAt(0) >= 48 && theNum.charCodeAt(0) <=57) || theNum.charCodeAt(0) == 45) {
return 0;
}
return 1;
}
function isOK(mynumber) {
var inputArr=new Array();
document.myForm.newNum.value = "";
var temp="";
var count=0;
var backToString;
for (var i = 0; i < mynumber.length; i++){
if (isNumeric(mynumber.substr(i,1)) == 0){
inputArr[i]="ÿ";
temp +=mynumber.substr(i,1)
}
else{
inputArr[i]=mynumber.substr(i,1);
}
}
orgLength=temp.length;
temp=parseInt(temp)+1;
backToString="";
for (var i = 0; i < inputArr.length; i++){
if (count==0&&inputArr[i]=="ÿ"){
backToString += inputArr[i];
count++;
}
if (inputArr[i]!="ÿ"){
backToString += inputArr[i];
}
}
backToString=backToString.replace("ÿ",temp);
document.myForm.newNum.value=backToString;
return false;
}
</script>
</head>
<body>
<form name="myForm" onsubmit="return isOK(document.myForm.theNum.value)" method="post">
<input type="text" name="theNum" value="m799">
<input type="submit" value=" + 1 = ">
<input type="text" name="newNum">
</form>
</body>
</html>
Works with positive and negative integers as long as there is only one number in the string (if the string is like "m799x3p", the function would return "m7994xp")...
Cheers - Pit
Pittimann
02-24-2004, 01:14 AM
Hi!
Sorry - I sent the stuff before completing it :confused: :rolleyes:
Here it is again, including leading zeros:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>My Program</title>
<script language="Javascript" type="text/javascript">
function isNumeric(theNum) {
if((theNum.charCodeAt(0) >= 48 && theNum.charCodeAt(0) <=57) || theNum.charCodeAt(0) == 45) {
return 0;
}
return 1;
}
var orgLength;
function isOK(mynumber) {
var inputArr=new Array();
document.myForm.newNum.value = "";
var temp="";
var temp2="";
var count=0;
var backToString;
for (var i = 0; i < mynumber.length; i++){
if (isNumeric(mynumber.substr(i,1)) == 0){
inputArr[i]="ÿ";
temp +=mynumber.substr(i,1)
}
else{
inputArr[i]=mynumber.substr(i,1);
}
}
orgLength=temp.length;
temp=Number(temp)+1;
var tempAbs=Math.abs(temp);
temp=''+temp;
if (orgLength>temp.length){
for (var i = 0; i < orgLength-temp.length; i++){
temp2 +='0';
}
}
temp2=''+temp2+tempAbs;
if (tempAbs!=temp){
temp2='-'+temp2;
}
temp=temp2;
backToString="";
for (var i = 0; i < inputArr.length; i++){
if (count==0&&inputArr[i]=="ÿ"){
backToString += inputArr[i];
count++;
}
if (inputArr[i]!="ÿ"){
backToString += inputArr[i];
}
}
backToString=backToString.replace("ÿ",temp);
document.myForm.newNum.value=backToString;
return false;
}
</script>
</head>
<body>
<form name="myForm" onsubmit="return isOK(document.myForm.theNum.value)" method="post">
<input type="text" name="theNum" value="m799">
<input type="submit" value=" + 1 = ">
<input type="text" name="newNum">
</form>
</body>
</html>
Cheers - Pit