return value from a function calles inside submit()

S

sindre

Hi,

Some place I use links to submit forms instead of a submit button. The
way I have done this is: <a
href="javascript:document.getElementById('<?php print "delete$i"
;?>').submit()>Delete?</a>.
This method worked perfectly fine. But then I also wanted to add a confirm
box to the user where. A confirm("do you really want to delete?").
So I made the function:
function controll()
{
if(confirm("Do you really want to delete?"))
{
return (true);
}
else
{
return (false);
}
}
And tried to call the function from inside the submit() like
<a href="javascript:document.getElementById('<?php print "delete$i"
;?>').submit(controll())>Delete?</a>.
This also works fine, but then I have to return the return value. So i
tried
<a href="javascript:document.getElementById('<?php print "delete$i"
;?>').submit(return controll())>Delete?</a>.
And that does not work.
It does work inside the onSubmit="..." then.
So My question is: How could I both use a link inside a form and give the
user the opportunity to regret the choice?


Sindre
 
M

Michael

sindre said:
Hi,

Some place I use links to submit forms instead of a submit button. The
way I have done this is: <a
href="javascript:document.getElementById('<?php print "delete$i"
;?>').submit()>Delete?</a>.
This method worked perfectly fine. But then I also wanted to add a confirm
box to the user where. A confirm("do you really want to delete?").
So I made the function:
function controll()
{
if(confirm("Do you really want to delete?"))
{
return (true);
}
else
{
return (false);
}
}
And tried to call the function from inside the submit() like
<a href="javascript:document.getElementById('<?php print "delete$i"
;?>').submit(controll())>Delete?</a>.
This also works fine, but then I have to return the return value. So i
tried
<a href="javascript:document.getElementById('<?php print "delete$i"
;?>').submit(return controll())>Delete?</a>.
And that does not work.
It does work inside the onSubmit="..." then.
So My question is: How could I both use a link inside a form and give the
user the opportunity to regret the choice?


Sindre

Hi Sindre,

Why don't you just use a <p> or <span> or <div> for your link?
I'd do it this way:

<script type="text/javascript">
function conditional_submit (myForm) {
if(confirm("Do you really want to delete?")) {
document.myForm.submit();
} else {
//nothing to do
}
}
</script>

<p onclick="conditional_submit(document.getElementById('<?php print
"delete$i";?>')">Delete?</p>

I didn't test it, but I hope it works. You could combine it with an
image too.
HTH

cu, Michael
 
M

mortb

sindre said:
Hi,

Some place I use links to submit forms instead of a submit button. The
way I have done this is: <a
href="javascript:document.getElementById('<?php print "delete$i"
;?>').submit()>Delete?</a>.
....

you can try:

href="javascript:if(confirm('Do you really want to
delete?'))document.getElementById('<?php print "delete$i"
;?>').submit()">Delete</a>

cheers,
mortb
 
S

sindre

Why don't you just use a <p> or <span> or <div> for your link?
I'd do it this way:

<script type="text/javascript">
function conditional_submit (myForm) {
if(confirm("Do you really want to delete?")) {
document.myForm.submit();
} else {
//nothing to do
}
}
</script>

<p onclick="conditional_submit(document.getElementById('<?php print
"delete$i";?>')">Delete?</p>

Actually it dont. Firstly onclick in div, p og span is not supported by
netscape 6.x. But it wont work either in opera or explorer. Nothing
happens when i move the mouse over the "link" and nothing happens when i
click the word.

Sindre
 
M

Michael

sindre said:
Actually it dont. Firstly onclick in div, p og span is not supported by
netscape 6.x. But it wont work either in opera or explorer. Nothing
happens when i move the mouse over the "link" and nothing happens when i
click the word.

Sindre

Sorry, my mistake. I forgot a closing bracket and it should be
myForm.submit(); instead of document.myForm.submit().

Here is an complete example-page, that workes out in Mozilla 1.7,
Netscape 6.2 and IE 6. It does not work in NS 4.75, because this one
does not jet support getElementById. I substituted '<?php print
"delete$i";?>' with 'delete1' in my example. As mortb wrote, you can
place the code of the function in the onclick event directly, depends
on how many forms you have in your page. You could also just send the
name(text!) of the form to the function like
onclick="conditional_submit('delete1');", then, depending on the
browser you could use document.getElementsByName,
document.getElementById or even document.all to get your form-object.

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>tests</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-15">

<script type="text/javascript">
function conditional_submit (myForm) { if(confirm("Do you really want
to delete?")) myForm.submit() }
</script>

<body>

<p onclick="conditional_submit(document.getElementById('delete1'))"
style="cursor:pointer">Delete?</p>
<br>
<div onclick="conditional_submit(document.getElementById('delete1'))"
style="cursor:pointer">Delete?</div>
<br>
<span onclick="conditional_submit(document.getElementById('delete1'))"
style="cursor:pointer">Delete?</span>
<br><br>
<a href="#" onclick="conditional_submit(document.getElementById('delete1'));return(false);">Delete?</a>
<br><br>
<a href=javascript:conditional_submit(document.getElementById('delete1'));>Delete?</a>
<br><br><form name="delete1" id="delete1" action="if1.html"
method="get" target="_self">
<input type="text" size="20" maxlength="30" name="myText">

</form>

</body>
</html>

Recommendation: Use CSS to format the links

cu, Michael
 
S

sindre

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>tests</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-15">

<script type="text/javascript">
function conditional_submit (myForm) { if(confirm("Do you really want
to delete?")) myForm.submit() }
</script>

<body>

<p onclick="conditional_submit(document.getElementById('delete1'))"
style="cursor:pointer">Delete?</p>
<br>
<div onclick="conditional_submit(document.getElementById('delete1'))"
style="cursor:pointer">Delete?</div>
<br>
<span onclick="conditional_submit(document.getElementById('delete1'))"
style="cursor:pointer">Delete?</span>
<br><br>
<a href="#"
onclick="conditional_submit(document.getElementById('delete1'));return(false);">Delete?</a>
<br><br>
<a
href=javascript:conditional_submit(document.getElementById('delete1'));>Delete?</a>
<br><br><form name="delete1" id="delete1" action="if1.html"
method="get" target="_self">
<input type="text" size="20" maxlength="30" name="myText">

</form>

</body>
</html>

Recommendation: Use CSS to format the links

cu, Michael

Sorry,
But It did not work. I used cut and paste the whole section. None of the
links worked here:)

Sindre
 
G

Grant Wagner

sindre said:
Sorry,
But It did not work. I used cut and paste the whole section. None of the
links worked here:)

Sindre

If you copied and pasted it verbatim, then the call to "confirm()" probably wrapped, which would
have resulted in a syntax error.

I just tested the code (after cleaning it up a bit) and it works fine:

<html>
<head>
<script type="text/javascript">
function confirm_delete(theForm) {
// DO NOT LET THE NEXT LINE WRAP
if (confirm("Do you really want to delete?")) {
theForm.submit();
}
}
</script>
</head>
<body>

&lt;P>:
<p
onclick="confirm_delete(document.forms['delete1']);"
style="cursor:pointer;"
Delete?</p>
&lt;DIV>:
<div
onclick="confirm_delete(document.forms['delete1']);"
style="cursor:pointer;"
Delete?</div>

<br>

&lt;SPAN>:
<span
onclick="confirm_delete(document.forms['delete1']);"
style="cursor:pointer;"
Delete?</span>

<br>
<br>

&lt;A>:
<a
href="#"
onclick="
confirm_delete(document.forms['delete1']);
return false;
"
Delete?</a>

<br><br>

<form name="delete1" action="action.cgi" method="get">
<input type="text" size="20" name="myText">
</form>
</body>
</html>

Everything is split across multiple lines to try make it clearer and to try to avoid
inappropriate line breaks caused by your news reader software.

--
| Grant Wagner <[email protected]>

* Client-side Javascript and Netscape 4 DOM Reference available at:
* http://devedge.netscape.com/library/manuals/2000/javascript/1.3/reference/frames.html
* Internet Explorer DOM Reference available at:
* http://msdn.microsoft.com/workshop/author/dhtml/reference/dhtml_reference_entry.asp
* Netscape 6/7 DOM Reference available at:
* http://www.mozilla.org/docs/dom/domref/
* Tips for upgrading JavaScript for Netscape 7 / Mozilla
* http://www.mozilla.org/docs/web-developer/upgrade_2.html
 
M

Michael Schmitt

Grant said:
If you copied and pasted it verbatim, then the call to "confirm()" probably wrapped, which would
have resulted in a syntax error.

| Grant Wagner <[email protected]>

I used the Web-Interface of google, which is breaking the lines. I
changed to my mail/news client, so this should not happen anymore.
 

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,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top