Menu
Hi.
I’v just started learning JS and have become quite interested. I’m created a calculator for my webpage. The calculator has a bunch of text objects, one option object.
There is one text object where the user keys a date, “some day in January”. 01/05/2006
I have a variable which equals a number say 15. I want to multiply 15*7 =105 and add that to the date in the text obect and place the new date in another text object called “cppLastFull.
so cppLastFull would = 04/20/2006
any help is great
thank you
<i>
</i>var strField = document.formName.elementName.value;
var dObj = new Date(strField);
var intD = dObj.getDate();
var intMath = intD * 7;
dObj.setDate(intD + intMath);
alert(dObj.toString());
[CODE]<html>
<head>
<script type="text/javascript">
var fifteen = 15;
var mult = 7;
function validate(isField){
splitDate = isField.value.split("/");
refDate = new Date(isField.value);
if (splitDate[0] < 1 || splitDate[0] > 12 || refDate.getDate() != splitDate[1] || splitDate[2].length != 4 || (!/^19|20/.test(splitDate[2])))
{
alert('Invalid date');
isField.value = "";
isField.focus();
return false;
}
isField.value = isField.value.replace(/^(d{1}/)/,"0$1").replace(/(d{2}/)(d{1}/)/,"$10$2")
return refDate;
}
function calc(nForm){
var startDate = validate(nForm['useDate']);
if (startDate)
{
var adj = fifteen * mult;
var dateStr = new Date(startDate.getFullYear(),startDate.getMonth(),startDate.getDate()+adj);
var slashStr = dateStr.getMonth()+1+"/"+dateStr.getDate()+"/"+dateStr.getFullYear();
nForm['cppLastFull'].value = slashStr.replace(/^(d{1}/)/,"0$1").replace(/(d{2}/)(d{1}/)/,"$10$2")
}
}
</script>
</head>
<body>
<form>
Date: <input type='text' name='useDate' size='9' onblur="calc(this.form)">
<br>
cppLastFull: <input type='text' name='cppLastFull' size='9' readonly>
</form>
</body>
</html>[/CODE]
[CODE]<html>
<head>
<script type="text/javascript">
var fifteen = 15;
var mult = 7;
function validate(isField){
splitDate = isField.value.split("/");
refDate = new Date(isField.value);
if (splitDate[0] < 1 || splitDate[0] > 12 || refDate.getDate() != splitDate[1] || splitDate[2].length != 4 || (!/^19|20/.test(splitDate[2])))
{
alert('Invalid date');
isField.value = "";
isField.focus();
return false;
}
isField.value = isField.value.replace(/^(d{1}/)/,"0$1").replace(/(d{2}/)(d{1}/)/,"$10$2")
return refDate;
}
function calc(nForm){
var startDate = validate(nForm['cppLastFull']);
if (startDate)
{
var adj = fifteen * mult;
var dateStr = new Date(startDate.getFullYear(),startDate.getMonth(),startDate.getDate()+adj);
var slashStr = dateStr.getMonth()+1+"/"+dateStr.getDate()+"/"+dateStr.getFullYear();
nForm['result'].value = slashStr.replace(/^(d{1}/)/,"0$1").replace(/(d{2}/)(d{1}/)/,"$10$2")
}
}
</script>
</head>
<body>
<form>
cppLastFull: <input type='text' name='cppLastFull' size='9' onblur="calc(this.form)">
<br>
Result <input type='text' name='result' size='9' readonly>
</form>
</body>
</html>[/CODE]
[CODE]<html>
<head>
<script type="text/javascript">
var cppN = 15;
function validate(isField){
splitDate = isField.value.split("/");
refDate = new Date(isField.value);
if (splitDate[0] < 1 || splitDate[0] > 12 || refDate.getDate() != splitDate[1] || splitDate[2].length != 4 || (!/^19|20/.test(splitDate[2])))
{
alert('Invalid date');
isField.value = "";
isField.focus();
return false;
}
isField.value = isField.value.replace(/^(d{1}/)/,"0$1").replace(/(d{2}/)(d{1}/)/,"$10$2")
return refDate;
}
function calc(nForm){
var startDate = validate(nForm['fPay']);
if (startDate)
{
var adj = cppN * 7;
var dateStr = new Date(startDate.getFullYear(),startDate.getMonth(),startDate.getDate()+adj);
var slashStr = dateStr.getMonth()+1+"/"+dateStr.getDate()+"/"+dateStr.getFullYear();
nForm['cppFullDate'].value = slashStr.replace(/^(d{1}/)/,"0$1").replace(/(d{2}/)(d{1}/)/,"$10$2")
}
}
</script>
</head>
<body>
<form>
fPay: <input type='text' name='fPay' size='9' onblur="calc(this.form)">
<br>
cppFullDate: <input type='text' name='cppFullDate' size='9' readonly>
</form>
</body>
</html>[/CODE]
[CODE]
var N = cppN;
function validate(isField){
splitDate = isField.value.split("/");
refDate = new Date(isField.value);
if (splitDate[0] < 1 || splitDate[0] > 12 || refDate.getDate() != splitDate[1] || splitDate[2].length != 4 || (!/^19|20/.test(splitDate[2])))
{
alert('Invalid date');
isField.value = "";
isField.focus();
return false;
}
isField.value = isField.value.replace(/^(d{1}/)/,"0$1").replace(/(d{2}/)(d{1}/)/,"$10$2")
return refDate;
}
function calc(nForm){
var startDate = validate(nForm['fPay']);
if (startDate)
{
var adj = N * 7;
var dateStr = new Date(startDate.getFullYear(),startDate.getMonth(),startDate.getDate()+adj);
var slashStr = dateStr.getMonth()+1+"/"+dateStr.getDate()+"/"+dateStr.getFullYear();
nForm['cppFullDate'].value = slashStr.replace(/^(d{1}/)/,"0$1").replace(/(d{2}/)(d{1}/)/,"$10$2")
}
}
[/CODE]
my form has a button to generate results, I tried adding a second onclick to it but no luck.[/QUOTE]
<i>
</i><html>
<head>
<title>CPP & EI Calculator</title>
<script language="Javascript" type="text/javascript">
<!--
function compute(form){
var p = parseFloat(form.gross.value);
var n = parseInt(form.payF.value);
var pn =(p)/(n);
var pncpp=(p-3500)/(n)// 3500 = basic deduction
var cp = (Math.round((pncpp *0.0495)))// calculated Full CPP Deduction
var ei =(Math.round((pn *0.0195))) // Full EI Deduction
var cppN = (1910.70/(cp)) // calculates number of pays to max CPP
var cppF = (cppN) - Math.floor(cppN);
var eiN = (729.30/(ei)) // calculated number of EI pays to max
var eiF = (eiN)- Math.floor(eiN)
var eiL = Math.round(eiF * ei)
var cppL = Math.round(cppF * ei)
var nP = cppN;
<i> </i>function validate(isField){
<i> </i> splitDate = isField.value.split("/");
<i> </i> refDate = new Date(isField.value);
<i> </i> if (splitDate[0] < 1 || splitDate[0] > 12 || refDate.getDate() != splitDate[1] || splitDate[2].length != 4 || (!/^19|20/.test(splitDate[2])))
<i> </i> {
<i> </i> alert('Invalid date');
<i> </i> isField.value = "";
<i> </i> isField.focus();
<i> </i> return false;
<i> </i> }
<i> </i> isField.value = isField.value.replace(/^(d{1}/)/,"0$1").replace(/(d{2}/)(d{1}/)/,"$10$2")
<i> </i> return refDate;
<i> </i>}
<i> </i>function calc(nForm){
<i> </i> var startDate = validate(nForm['fPay']);
<i> </i> if (startDate)
<i> </i> {
<i> </i> var adj = nP * 7;
<i> </i> var dateStr = new Date(startDate.getFullYear(),startDate.getMonth(),startDate.getDate()+adj);
<i> </i> var slashStr = dateStr.getMonth()+1+"/"+dateStr.getDate()+"/"+dateStr.getFullYear();
<i> </i> nForm['cppFullDate'].value = slashStr.replace(/^(d{1}/)/,"0$1").replace(/(d{2}/)(d{1}/)/,"$10$2")
<i> </i> }
<i> </i>}
<i>
</i><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>CPP & EI Calculator</title>
<script language="Javascript" type="text/javascript">
<!--
function compute(form){
var p = parseFloat(form.gross.value);
var n = parseInt(form.payF.value);
var pn =(p)/(n);
var pncpp=(p-3500)/(n)// 3500 = basic deduction
var cp = (Math.round((pncpp *0.0495)))// calculated Full CPP Deduction
var ei =(Math.round((pn *0.0195))) // Full EI Deduction
var cppN = (1910.70/(cp)) // calculates number of pays to max CPP
var cppF = (cppN) - Math.floor(cppN);
var eiN = (729.30/(ei)) // calculated number of EI pays to max
var eiF = (eiN)- Math.floor(eiN)
var eiL = Math.round(eiF * ei)
var cppL = Math.round(cppF * ei)
if(isNaN(p)){
alert('Enter Gross Annual Pay');
form.gross.focus();
return;
}
if(isNaN(n)){
form.payF.focus();
return;
}
if((p-3500)*0.0495 < 1910.70) {
alert('Will Not Reach CPP Max of $1910.70');
form.payF.focus();
}
if(p*0.0195 < 729.30) {
alert('Will Not Reach EI Max of $729.30');
form.payF.focus();
return;
}
form.cppFull.value = (cp)
form.eiFull.value = (ei)
form.eiLast.value = (eiL)
form.cppLast.value = (cppL)
}
<i> </i>function validate(isField){
var nP = cppN;
var p = parseFloat(form.gross.value);
var n = parseInt(form.payF.value);
var pn =(p)/(n);
var pncpp=(p-3500)/(n)// 3500 = basic deduction
var cp = (Math.round((pncpp *0.0495)))// calculated Full CPP Deduction
var cppN = (1910.70/(cp)) // calculates number of pays to max CPP
var sel = document.forms[0].payF;
var d, opt = sel.options[sel.selectedIndex].value;
switch (opt) {
case "52": d = 7; break;
case "26": d = 14; break;
case "24": d = 15; break;
case "12": d = 30; break;
default: alert("Check Pay Frequency.");
}
<i> </i> splitDate = isField.value.split("/");
<i> </i> refDate = new Date(isField.value);
<i> </i> if (splitDate[0] < 1 || splitDate[0] > 12 || refDate.getDate() != splitDate[1] || splitDate[2].length != 4 || (!/^19|20/.test(splitDate[2])))
<i> </i> {
<i> </i> alert('Invalid date');
<i> </i> isField.value = "";
<i> </i> isField.focus();
<i> </i> return false;
<i> </i> }
<i> </i> isField.value = isField.value.replace(/^(d{1}/)/,"0$1").replace(/(d{2}/)(d{1}/)/,"$10$2")
<i> </i> return refDate;
<i> </i>}
<i> </i>function calc(nForm){
<i> </i> var startDate = validate(nForm['fPay']);
<i> </i> if (startDate)
<i> </i> {
<i> </i> var adj = nP * d;
<i> </i> var dateStr = new Date(startDate.getFullYear(),startDate.getMonth(),startDate.getDate()+adj);
<i> </i> var slashStr = dateStr.getMonth()+1+"/"+dateStr.getDate()+"/"+dateStr.getFullYear();
<i> </i> nForm['cppFullDate'].value = slashStr.replace(/^(d{1}/)/,"0$1").replace(/(d{2}/)(d{1}/)/,"$10$2")
<i> </i> }
<i> </i>}
//-->
</script>
<style type="text/css">
<!--
fieldset {
width:500px;
padding:10px;
border:3px double #000;
margin:20px auto;
border-color:#0000ff;
}
div {
width:500px;
color:#0000ff;
Float:left;
}
label,input {
display:block;
width:100px;
float:left;
margin:5px 2px;
}
label,text {
display:block;
width: 200px;
float:left;
margin:5px 2px;
color: blue;
}
-->
</style>
</head>
<body>
<form name="ded" method="post">
<fieldset>
<div>
<font face='arial'><small>This Calculator will determine, based on your income and
pay frequency when you will have reached your maximum Canada Pension and
Employment insurance deductions.</small></font>
</div>
<hr>
<div>
<label>Gross Pay:</label>
<input type="text" name="gross">
</div>
<div>
<label>Pays Per Year:</label>
<SELECT NAME="payF" SIZE=0>
<OPTION VALUE="">
<OPTION VALUE="52">52
<option value="26">26
<option value="24">24
<option value="12">12
</SELECT>
</div>
<div>
<label>Date of First Pay:</label></label>
<input type="text" name="fPay">
</div>
<hr>
<div>
<label>CPP full deduction/pay:</label>
<input type="text" name="cppFull" READONLY>
</div>
<div>
<label>CPP last deduction amount:</label>
<input type="text" name="cppLast" READONLY>
</div>
<div>
<label>Date last full CPP deduction:</label>
<input type="text" name="cppFullDate" READONLY>
</div>
<div>
<label>Date last CPP deduction:</label>
<input type="text" name="CPPLasDate" READONLY>
</div>
<hr>
<div>
<label>EI full deduction/pay:</label>
<input type="text" name="eiFull" READONLY>
</div>
<div>
<label>EI last deduction amount</label>
<input type="text" name="eiLast" READONLY>
</div>
<div>
<label>Date last full EI deduction:</label>
<input type="text" name="eiFullDate" READONLY>
</div>
<div>
<label>Date last EI deduction:</label>
<input type="text" name="eiLastDate" READONLY>
</div>
<hr>
<DIV>
<TEXTAREA NAME="" ROWS="5" COLS="60"></TEXTAREA>
</DIV>
<div>
<input type="button" value="Calculate" onclick="compute(this.form)"onclick="calc(this.form)">
<input type="reset" value="Reset" onclick="this.form.gross.focus()">
</div>
</form>
</body>
</html>
<i>
</i><script type="text/javascript">
<!--//
function compute(form){
<i> </i>var p = parseFloat(form.gross.value);
<i> </i>var n = parseInt(form.payF.value);
<i> </i>var pn =(p)/(n);
<i> </i>var pncpp=(p-3500)/(n)// 3500 = basic deduction
<i> </i>var cp = (Math.round((pncpp *0.0495)))// calculated Full CPP Deduction
<i> </i>var ei =(Math.round((pn *0.0195))) // Full EI Deduction
<i> </i>var cppN = (1910.70/(cp)) // calculates number of pays to max CPP
<i> </i>var cppF = (cppN) - Math.floor(cppN);
<i> </i>var eiN = (729.30/(ei)) // calculated number of EI pays to max
<i> </i>var eiF = (eiN)- Math.floor(eiN)
<i> </i>var eiL = Math.round(eiF * ei)
<i> </i>var cppL = Math.round(cppF * ei)
<i> </i>if(isNaN(p)){
<i> </i> alert('Enter Gross Annual Pay');
<i> </i> form.gross.focus();
<i> </i> return;
<i> </i> }
<i> </i>if(isNaN(n)){
<i> </i> form.payF.focus();
<i> </i> return;
<i> </i> }
<i> </i>if((p-3500)*0.0495 < 1910.70) {
<i> </i> alert('Will Not Reach CPP Max of $1910.70');
<i> </i> form.payF.focus();
<i> </i> }
<i> </i>if(p*0.0195 < 729.30) {
<i> </i> alert('Will Not Reach EI Max of $729.30');
<i> </i> form.payF.focus();
<i> </i> return;
<i> </i> }
<i> </i>form.cppFull.value = (cp)
<i> </i>form.eiFull.value = (ei)
<i> </i>form.eiLast.value = (eiL)
<i> </i>form.cppLast.value = (cppL)
}
function validate(isField){
<i> </i>var nP = cppN;
<i> </i>var p = parseFloat(form.gross.value);
<i> </i>var n = parseInt(form.payF.value);
<i> </i>var pn =(p)/(n);
<i> </i>var pncpp=(p-3500)/(n)// 3500 = basic deduction
<i> </i>var cp = (Math.round((pncpp *0.0495)))// calculated Full CPP Deduction
<i> </i>var cppN = (1910.70/(cp)) // calculates number of pays to max CPP
<i> </i>var sel = document.forms[0].payF;
<i> </i>var d, opt = sel.options[sel.selectedIndex].value;
<i> </i>switch (opt) {
<i> </i> case "52": d = 7; break;
<i> </i> case "26": d = 14; break;
<i> </i> case "24": d = 15; break;
<i> </i> case "12": d = 30; break;
<i> </i> default: alert("Check Pay Frequency.");
<i> </i>}
<i> </i>splitDate = isField.value.split("/");
<i> </i>refDate = new Date(isField.value);
<i> </i>if (splitDate[0] < 1 || splitDate[0] > 12 || refDate.getDate() != splitDate[1] || splitDate[2].length != 4 || (!/^19|20/.test(splitDate[2])))
<i> </i> {
<i> </i> alert('Invalid date');
<i> </i> isField.value = "";
<i> </i> isField.focus();
<i> </i> return false;
<i> </i> }
<i> </i>isField.value = isField.value.replace(/^(d{1}/)/,"0$1").replace(/(d{2}/)(d{1}/)/,"$10$2")
<i> </i>return refDate;
}
function calc(nForm){
<i> </i>var startDate = validate(nForm['fPay']);
<i> </i>if (startDate)
<i> </i> {
<i> </i> var adj = nP * d;
<i> </i> var dateStr = new Date(startDate.getFullYear(),startDate.getMonth(),startDate.getDate()+adj);
<i> </i> var slashStr = dateStr.getMonth()+1+"/"+dateStr.getDate()+"/"+dateStr.getFullYear();
<i> </i> nForm['cppFullDate'].value = slashStr.replace(/^(d{1}/)/,"0$1").replace(/(d{2}/)(d{1}/)/,"$10$2")
<i> </i> }
}
//-->
</script>
0.1.9 — BETA 5.4