By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,298 Members | 1,434 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,298 IT Pros & Developers. It's quick & easy.

update text field based on selection field

P: n/a
ok, this is gonna seem stupid, but it has been stumping me all
afternoon.

I have two fields on a HTML page. HTML looks like this...

<html>
<head>
<title>New Page 3</title>
</head>
<body>
<form method="POST" action="index.asp">
<select size="1" name="shiptype" onchange="crazyJavascriptFuntion()">
<option selected>SELECT ONE</option>
<option value="3">GROUND (3 DAY)</option>
<option value="2">2ND DAY AIR (2 DAY)</option>
<option value="1">OVERNIGHT (1 DAY)</option>
</select>
<input type="text" name="duedate" size="20"></p>
</form>
</body>
</html>

I would like for the text field to automatically update to todays date
+ appropriate selection from ship type.

so if someone selects "GROUND" the text box called "duedate" will
update to Today + 1 day.

any help on this would be greatly appreciated.

Jul 23 '05 #1
Share this Question
Share on Google+
13 Replies


P: n/a
pk*******@hotmail.com wrote:
I would like for the text field to automatically update to todays date
+ appropriate selection from ship type.


A simple approach is ...

<script type="text/javascript">
function setDueDate(oSel) {
var nNow = new Date().getTime(),
nOff = oSel.options[oSel.selectedIndex].value * 8.64E7,
// 86400000 milliseconds are one day
dDue = new Date(nNow + nOff);
oSel.form.elements["duedate"].value
= dDue.getFullYear() + "/"
+ digits(dDue.getMonth() + 1, 2) + "/"
+ digits(dDue.getDate(), 2);
}
function digits(s, n) {
s = s.toString();
while (s.length < n) s = "0" + s;
return s;
}
</script>
[...]
<select name="shiptype" onchange="setDueDate(this)">

.... but this depends on correct date settings at client's system.
If your web server supports apache style Server Side Includes (SSI),
you can simply avoid that using a litte SSI extension:

<!--#config timefmt="%a, %d %b %Y %T GMT"-->
<script type="text/javascript">
var timeOffset = new Date().getTime()
- new Date("<!--#echo var="DATE_GMT" -->").getTime();
function getServerTime() {
return new Date(new Date().getTime() - timeOffset);
}
function setDueDate(oSel) {
var nNow = getServerTime(),
nOff = oSel.options[oSel.selectedIndex].value * 8.64E7,
dDue = new Date(nNow + nOff);
oSel.form.elements["duedate"].value
= dDue.getFullYear() + "/"
+ digits(dDue.getMonth() + 1, 2) + "/"
+ digits(dDue.getDate(), 2);
}
function digits(s, n) {
s = s.toString();
while (s.length < n) s = "0" + s;
return s;
}
</script>
[...]
<select name="shiptype" onchange="setDueDate(this)">

ciao, dhgm
Jul 23 '05 #2

P: n/a
Dietmar Meier wrote:
[...]
function digits(s, n) {
s = s.toString();
while (s.length < n) s = "0" + s;
return s;
}


This can be a tad simpler:

// Add leading zero to numbers less than 10
function digits(x) {
return (x<10)? x = "0" + x : x;
}

--
Fred
Jul 23 '05 #3

P: n/a
Fred Oz wrote:
function digits(s, n) {
s = s.toString();
while (s.length < n) s = "0" + s;
return s;
}
This can be a tad simpler:
Yes (but digits(s, n) is more versatile).
// Add leading zero to numbers less than 10
function digits(x) {
return (x<10)? x = "0" + x : x; ^^^^
Drop that "x = ".
}


Another simple and fast one:

function digits2(s) {
return (Number(s) + 100).toString().substring(1);
}

ciao, dhgm
Jul 23 '05 #4

P: n/a
thanks a TON you guys. i ended up with the following, which i had
bastardized from some other javascript i found. its only works with
..ASP pages, but it works...

<script language='javascript'>
function SelVal(fF,tF,fname,tname)
{
eval(tF + "." + tname + ".value = " + fF + "." + fname +
".options.value");
}
</script>

<form name="mess1" ID="Form1">
<table cellpadding="4" border="0" ID="Table2">
<tr>
<td>
<p><b>First</b></p>
</td>
<td>
<p><b><select style="width=140" name="us1"
onchange="SelVal('mess1','mess2','us1','sf1')" ID="Select1">
<option value selected>SELECT ONE
<option value="<%=NOW()+4%>">Ground (4 day)
<option value="<%=NOW()+2%>">2ND DAY (2 day)
<option value="<%=NOW()+1%>">OVERNIGHT (1 day)
</select></b></p>
</td>
</tr>
</table>
</form>
<form name="mess2" ID="Form2">
<table cellpadding="4" border="0" ID="Table3">
<tr>
<td>
<p><b>Second</b></p>
</td>
<td>
<p><input type="text" name="sf1" size="40" ID="Text2"></p>
</td>
</tr>
</table>
</form>

its ugly, its messy, but it does exactly what i wanted it to. thanks a
TON for your insight guys. probably gonna end up going with one of the
above solutions, just cause they look better and aren't .asp dependent.

Jul 23 '05 #5

P: n/a
pk*************@hotmail.com wrote:
<script language='javascript'>
function SelVal(fF,tF,fname,tname)
{
eval(tF + "." + tname + ".value = " + fF + "." + fname +
".options.value");
}


This works in MSIE only, and is an extremely useless use of evil eval.
You should replace it with:

<script type="text/javascript" language='javascript'>
function SelVal(sel, tF, tname) {
var f, t;
if ((f = document.forms[tF]) && (t = f.elements[tname]))
t.value = sel.options[sel.selectedIndex].value;
}
</script>
....
<select [...] onchange="SelVal(this, 'mess2', 'sf1')" [...]>

ciao, dhgm
Jul 23 '05 #6

P: n/a
JRS: In article <35*************@individual.net>, dated Tue, 25 Jan
2005 23:34:01, seen in news:comp.lang.javascript, Dietmar Meier
<us***************@innoline-systemtechnik.de> posted :
var nNow = new Date().getTime(),
nOff = oSel.options[oSel.selectedIndex].value * 8.64E7,
// 86400000 milliseconds are one day Usually. dDue = new Date(nNow + nOff);


Will probably fail if the interval spans the last Sunday in either March
or October, probably March.

nNow = new Date()
nOff = oSel.options[oSel.selectedIndex].value
dDue = nNow.setDate(nNow.getDate() + nOff)

See below.

--
John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4
<URL:http://www.jibbering.com/faq/> JL/RC: FAQ of news:comp.lang.javascript
<URL:http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
<URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.
Jul 23 '05 #7

P: n/a
JRS: In article <41f6f494$0$10525$5a62ac22@per-qv1-newsreader-
01.iinet.net.au>, dated Wed, 26 Jan 2005 11:33:42, seen in
news:comp.lang.javascript, Fred Oz <oz****@iinet.net.auau> posted :
// Add leading zero to numbers less than 10
function digits(x) {
return (x<10)? x = "0" + x : x;
}


Unfortunately its result can be either a string or a number. That can
have unfortunate consequences if

YYYYMMDD = digits(D.getFullYear()) +
digits(D.getMonth()+1) +
digits(D.getDate())

is tested only in Jan..Sep. And the "x = " is not needed. Consider

return ( x<10 ? "0" : "") + x

See below.

--
John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4
<URL:http://www.jibbering.com/faq/> JL/RC: FAQ of news:comp.lang.javascript
<URL:http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
<URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.
Jul 23 '05 #8

P: n/a
Dr John Stockton wrote:
// 86400000 milliseconds are one day
Usually.
Always (apart from leap seconds). DST simply changes the time zone,
the length of a day (as Date.getTime() shows) is not really affected
by this.
dDue = new Date(nNow + nOff);

Will probably fail if the interval spans the last Sunday in either
March or October, probably March.


Yep

ciao, dhgm
Jul 23 '05 #9

P: n/a
JRS: In article <35*************@individual.net>, dated Wed, 26 Jan
2005 09:35:34, seen in news:comp.lang.javascript, Dietmar Meier
<us***************@innoline-systemtechnik.de> posted :

function digits2(s) {
return (Number(s) + 100).toString().substring(1);
}

I tested something similar to that, and found it slower (on a reasonable
input mix) than conditionally adding "0" / ""; however, it seemed to be
the best algorithm for VBScript.

It's hardly critical; but it might be amusing to see what is really
best.
NOTE : There are two cases.

(1) the parameter is guaranteed to be an integer in the range 0..99 -
which is so for much common use.
(2) it is not - in that case my preference is for a method that will
always return the correct numerical value. If it's going to be wrong,
it should *look* wrong!

Consider these, which I have not timed :

function D2(X) { var S = X+""
return S.length==1 ? "0"+S : S }

function D2(X) { var S
return (S=X+"").length==1 ? "0"+S : S }

and note that they work equally well if the number is a hex string -
i.e. a -> 0a !

--
John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 MIME.
Web <URL:http://www.merlyn.demon.co.uk/> - w. FAQish topics, links, acronyms
PAS EXE etc : <URL:http://www.merlyn.demon.co.uk/programs/> - see 00index.htm
Dates - miscdate.htm moredate.htm js-dates.htm pas-time.htm critdate.htm etc.
Jul 23 '05 #10

P: n/a
JRS: In article <35*************@individual.net>, dated Thu, 27 Jan
2005 01:00:23, seen in news:comp.lang.javascript, Dietmar Meier
<us***************@innoline-systemtechnik.de> posted :
Dr John Stockton wrote:
// 86400000 milliseconds are one day

Usually.


Always (apart from leap seconds). DST simply changes the time zone,
the length of a day (as Date.getTime() shows) is not really affected
by this.


Date.getTime() has nothing to do with Days; it is an absolute time
measure, giving the same result simultaneously world-wide, for well-
adjusted systems. It is a pity that the identifier getUTCms was not
used instead.

The last Sunday in March has 23 hours, from 00:00 to 24:00.
The last Sunday in October has 25 hours, from 00:00 to 24:00.
North Americans are later in Spring, Antipodeans are inverted, others
vary.

ISO 8601:2000 considers the day as a unit of time to be 24 hours; but
the calendar day to be 24 hours +- leap second +- other (Summer Time)
changes.

--
John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 MIME.
Web <URL:http://www.merlyn.demon.co.uk/> - w. FAQish topics, links, acronyms
PAS EXE etc : <URL:http://www.merlyn.demon.co.uk/programs/> - see 00index.htm
Dates - miscdate.htm moredate.htm js-dates.htm pas-time.htm critdate.htm etc.
Jul 23 '05 #11

P: n/a
Dr John Stockton wrote:
ISO 8601:2000 considers the day as a unit of time to be 24 hours; but
the calendar day to be 24 hours +- leap second +- other (Summer Time)
changes.


Agreed.

ciao, dhgm
Jul 23 '05 #12

P: n/a
Dr John Stockton wrote:
It's hardly critical; but it might be amusing to see what is really
best.


That's the kind of amusement my wife doesn't understand ...

For your gallery another funny one (even faster, especially in Geckos):

function d2tf5(n) {
return (- -n < 10 && "0" || "") + n;
}

ciao, dhgm
Jul 23 '05 #13

P: n/a
JRS: In article <35*************@individual.net>, dated Fri, 28 Jan
2005 01:32:49, seen in news:comp.lang.javascript, Dietmar Meier
<us***************@innoline-systemtechnik.de> posted :
Dr John Stockton wrote:
It's hardly critical; but it might be amusing to see what is really
best.


That's the kind of amusement my wife doesn't understand ...

For your gallery another funny one (even faster, especially in Geckos):

function d2tf5(n) {
return (- -n < 10 && "0" || "") + n;
}


For me, as is, it is just a little faster than the LZ I've been using.

But it gives unfortunate results for x<0, and fixing that removes the
speed difference for me.

Starting -n > -10 saves one character!

--
John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4
<URL:http://www.jibbering.com/faq/> JL/RC: FAQ of news:comp.lang.javascript
<URL:http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
<URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.
Jul 23 '05 #14

This discussion thread is closed

Replies have been disabled for this discussion.