"return false" gives a blank page with the word "false" ?

K

kurtj

Hello Gurus:

I have a validation script (below) that is somehow messed up. If the
Name field is blank, I get the alert message, then the browser window
goes to a blank document with the word "false" on it. What the ?!?!?!

To test, I commented out the 'return false;' code in the second IF
block, so now if there is a value in Name then I get the alert message
for Email and the page stays put.

What the heck is going on here, and am I doing wrong? BTW, the
"submit" button is a graphic.


<********** START CODE **********>
<script language="JavaScript" type="text/javascript">
<!--
function validate() {
var x = "0";

if (document.subinfo.Name.value == "") {
alert("You must enter your First Name.");
document.subinfo.Name.focus();
x.value = "1";
return(false); }

if (document.subinfo.Email.value == "" ||
document.subinfo.Email.value.indexOf("@") == -1 ||
document.subinfo.Email.value.indexOf(".") == -1) {
alert("Invalid email address. Please re-enter it.");
document.subinfo.Email.focus();
// return false; }
x.value = "1"; }

if (x.value == "0") {
launchwin('thanks.html','confirmation','height=200,width=280');
document.subinfo.submit();
location.href = "default.html"; }
}
-->
</script>

<form action="mailto:[email protected]" id="subinfo" method="post"
name="subinfo" enctype="text/plain">
<input name="Name" size="24" /><br /><br />
<input name="Company" size="24" /><br /><br />
<input name="Email" size="24" /><br /><br />
<textarea name="Comments" cols="38" rows="5"></textarea><br /><br />
<a href="javascript:validate()">
<img src="gfx/send.gif" name="send" width="42" height="18"
alt="Send Form" />
</a>&nbsp;&nbsp;
<a href="javascript:document.inquiries.reset()">
<img src="gfx/clear.gif" name="clear" width="42" height="18"
alt="Clear Form" />
</a>
</form>

<********** END CODE **********>

Thanks,
Kurt
 
E

Evertjan.

wrote on 15 feb 2006 in comp.lang.javascript:
Hello Gurus:

I have a validation script (below) that is somehow messed up. If the
Name field is blank, I get the alert message, then the browser window
goes to a blank document with the word "false" on it. What the ?!?!?!

To test, I commented out the 'return false;' code in the second IF
block, so now if there is a value in Name then I get the alert message
for Email and the page stays put.

What the heck is going on here, and am I doing wrong? BTW, the
"submit" button is a graphic.


<********** START CODE **********>
<script language="JavaScript" type="text/javascript">

do not use language="JavaScript"

do not use <!--
function validate() {
var x = "0";

if (document.subinfo.Name.value == "") {
alert("You must enter your First Name.");
document.subinfo.Name.focus();
x.value = "1";
return(false); }

should be:

return false; }

but then the x.value = "1"; would not be usefull,
so delete the return false here

if (document.subinfo.Email.value == "" ||
document.subinfo.Email.value.indexOf("@") == -1 ||
document.subinfo.Email.value.indexOf(".") == -1) {
alert("Invalid email address. Please re-enter it.");
document.subinfo.Email.focus();
// return false; }

well done //
x.value = "1"; }

if (x.value == "0") {
launchwin('thanks.html','confirmation','height=200,width=280');

what is launchwin() ???????????
document.subinfo.submit();
location.href = "default.html"; }
}
-->
</script>

<form action="mailto:[email protected]" id="subinfo" method="post"
name="subinfo" enctype="text/plain">
<input name="Name" size="24" /><br /><br />

do not use said:
<input name="Company" size="24" /><br /><br />
<input name="Email" size="24" /><br /><br />
<textarea name="Comments" cols="38" rows="5"></textarea><br /><br />
<a href="javascript:validate()">
<img src="gfx/send.gif" name="send" width="42" height="18"
alt="Send Form" />
</a>&nbsp;&nbsp;

href="javascript: is a bad idea, better do:

<form onsubmit='validate()' ...

and

<a href="javascript:document.inquiries.reset()">
<img src="gfx/clear.gif" name="clear" width="42" height="18"
alt="Clear Form" />
</a>

same here:

<img onclick='document.inquiries.reset()' src="gfx/clear.gif"
style='cursor:pointer;'>
 
L

lallous

Hello

1. Better make use of ONSUBMIT event

2. If you are just to fix what you wrote, simply add: void(0) after your
validate function call, just like in:

<script>
function fnc1()
{
if (/*validation ok*/)
{
// submit the form
FORM_VAR.submit();
return true;
}
return false;
}
</script>
</head>

<body>
<a href="javascript: fnc1();void(0);">adsasd</a>
</body>
</html>

HTH
Elias
 
K

Kurt

Thank you all for your help. I removed the <a> tags surrounding the
<img> buttons in the form, and put the "href" code into an "onclick"
event within the <img> tag (thank you Evertjan!) Also removed the "x"
variable lines since they were redundant.

I have a question about Evertjan's response:
do not use language="JavaScript"
do not use <!--

Why should I not use language="JavaScript" or <!-- ??


Many thanks again!
Kurt

PS: I am using XHTML which requires self-closing empty tags (<br />).
I tested the page in various browsers (IE6, FF1.5, N6, N8, Opera8.51),
and only Netscape 6 showed a discrepancy by adding additional space
underneath various images (assumed).
 
E

Evertjan.

Ian Collins wrote on 16 feb 2006 in comp.lang.javascript:
language="JavaScript" isn't a valid script attribute in HTML 4 or XHTML,
try a validator on your page.

Indeed.

While it entirely possible to insert:

// this line serves no intended purpose

every other line in a js, it would only cloud the appearance of the js,
and do not good whatsoever. The same goes for the above two.
 
K

Kurt

According to validator.w3.org, the web page (and the entire site)
passes validation for Doctype XHTML 1.0 Transitional.

I was about to argue, since it's found just about EVERYWHERE, that the
language attribute is needed, but thanks to you I found out that it is
indeed deprecated. I will stop using it in the future. However, W3C
still says to comment out code for non-script-aware browsers (see
http://www.w3.org/TR/html401/interact/scripts.html#idx-user_agent).

Many thanks for the lessons learned.

Kurt
 
E

Evertjan.

Kurt wrote on 16 feb 2006 in comp.lang.javascript:
According to validator.w3.org, the web page (and the entire site)
passes validation for Doctype XHTML 1.0 Transitional.

I was about to argue, since it's found just about EVERYWHERE, that the
[...]

Please quote what you are replying to.
This is usenet, not email.

If you want to post a followup via groups.google.com, don't use the
"Reply" link at the bottom of the article. Click on "show options" at the
top of the article, then click on the "Reply" at the bottom of the article
headers. <http://www.safalra.com/special/googlegroupsreply/>
 
T

Thomas 'PointedEars' Lahn

Ian said:
There's plenty out there

Two wrongs make no right.
and <br /> is the correct compatibility option.

`<br />' is equivalent to `<br>&gt;' in HTML. The correct "compatibility
option" is `<br></br>'; if you read anything different in the non-normative
XHTML 1.0 Appendix C, it is _worng_. The only problem is that there may
be borken UAs out there that cannot parse this correct markup correctly.
Therefore, XHTML should _never_ be served as text/html (and IE does not
support the proper media type application/xhtml+xml):

<URL:http://hixie.ch/advocacy/xhtml>


PointedEars
 
T

Thomas 'PointedEars' Lahn

Ian said:
Kurt said:
Why should I not use language="JavaScript" or <!-- ??
language="JavaScript" isn't a valid script attribute in HTML 4 or XHTML,
[...]

It is Valid in the Transitional subsets of HTML 4.01 and XHTML 1.0.
It is deprecated and unnecessary, though.


PointedEars
 
T

Thomas 'PointedEars' Lahn

Kurt said:
I have a question about Evertjan's response:

Why should I not use language="JavaScript" or <!-- ??

Enough said about the `language' attribute.

About trying to comment out scripts this way:

In HTML, it is error-prone. The `script' element's content is CDATA and
is passed as-is to the script engine. In ECMAScript implementations, `<',
`!', and `--' are operators, and you provide no valid operand: syntax
error. Furthermore, there is no standards compliant UA out there that
requires it; HTML versions prior to 3.2, which did not define the `script'
element yet, have been obsoleted by RFC2854 in 2000 CE (six years ago!).

In XHTML, it is nonsense. There has been no XHTML version that did not
declare the `script' element, so there is no need to hide anything.
Furthermore, in XHTML the `script' element's content is PCDATA, and is
parsed by the XML parser before it is passed to the script engine.
However, in XML applications like XHTML `<!-- ... -->' are _comments_
and an XML parser is allowed to remove all comments before building the
parse tree. You could and will end up with an empty `script' element:
<script/>

See previous discussions on this, it has been discussed _ad nauseam_ before.
PS: I am using XHTML [...]

Do not do that, unless you have to.


PointedEars
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,565
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top