Author |
Message |
Thomas2
Junior WebHelper
Joined: 22 Jul 2003
Posts: 9
Location: Leicester, UK
|
Posted:
Thu Oct 16, 2003 8:58 am (20 years, 6 months ago) |
|
I put an onClick event handler in the Input-tag of form which should trigger a javascript function if the form is submitted but nothing happens. I also tried using onSubmit in the Form-tag but it does not work either. Using onClick in the Form-tag or Textarea-tag runs the script when I put the cursor in the Textarea field which is not what I want however.
It all works OK if the function is triggered from outside the form (e.g. from a link).
The code (which is part of a chatroom script) is basically as follows
<HTML>
<HEAD>
<SCRIPT Language="Javascript" src="refresh.js" type="text/javascript"> </SCRIPT>
</HEAD>
<BODY>
<form method="post" action="input.php" >
<textarea name="txt" type="text" rows="5" cols="52" id="txt"></textarea>
<input type="submit" name="Submit" value=" Chat! " onClick="refr()">
</form>
</BODY>
</HTML>
where refresh.js is given by
function refr() {
parent.mainFrame.location.href="messages.php";
}
This should refresh the content in mainFrame but it doesn't (there are no javascript error messages of any kind). The function is actually called (I checked it by putting in a javascript alert) but it does not refresh the frame. As mentioned, it works perfectly OK if the javascript is called outside the form.
Any suggestions what might cause the problem ? |
|
|
|
|
Darren
Team Member
Joined: 05 Feb 2002
Posts: 549
Location: London
|
Posted:
Thu Oct 16, 2003 1:29 pm (20 years, 6 months ago) |
|
This is just a wild stab in the dark, as I'm no JavaScript expert, but try this:
onClick="refr();return false"; |
|
|
|
|
Thomas2
Junior WebHelper
Joined: 22 Jul 2003
Posts: 9
Location: Leicester, UK
|
Posted:
Thu Oct 16, 2003 2:02 pm (20 years, 6 months ago) |
|
Darren wrote: | This is just a wild stab in the dark, as I'm no JavaScript expert, but try this:
onClick="refr();return false"; |
I tried your suggestion and the script runs now as it should but instead the content of the form is not being submitted (without the 'return false' it is just the other way around). There seems to be some conflict between submitting the form and running the script. |
|
|
|
|
Darren
Team Member
Joined: 05 Feb 2002
Posts: 549
Location: London
|
Posted:
Thu Oct 16, 2003 2:45 pm (20 years, 6 months ago) |
|
See if adding this somewhere in your function helps
document.name_of_form.submit();
I'm getting this from a bit of JS that validates a form. In this case if any of the fields are empty it throws up an alert message else it runs the line I pasted above. Might help. really don't know |
|
|
|
|
Thomas2
Junior WebHelper
Joined: 22 Jul 2003
Posts: 9
Location: Leicester, UK
|
Posted:
Thu Oct 16, 2003 5:14 pm (20 years, 6 months ago) |
|
It occurred to me now that the problem with the code as given above is that the frame refreshes before the content of the form is sent. I tried therefore now to submit the form from the javascript by putting the line you suggested in a function subm(), calling subm() from the input-tag with onClick="subm()" and then calling the refresh function from subm() with setTimeout('refr()',1000). Unfortunately this does not work either as apparenly refr() is not called (I checked this by inserting a javascript alert in refr()). It seems that submitting the form stops the scripts in either way.
(actually this solution submits the content of the form twice, once from the HTML and once from the script; adding the 'return false' results only in one submission but still does not result in the refresh being executed).
P.S.: I have posted the problem already in forums.34sp.com and also in forums.webdeveloper.com without getting any closer to the solution |
|
|
|
|
Darren
Team Member
Joined: 05 Feb 2002
Posts: 549
Location: London
|
Posted:
Fri Oct 17, 2003 8:58 am (20 years, 6 months ago) |
|
You say this for a chatroom, maybe it would be useful to look at some other chatroom scripts to see how they do what you are trying to do.
Hopefully someone with proper knowledge of JavaScript will visit the forums soon. Let us know if you find a solution elsewhere. |
|
|
|
|
Thomas2
Junior WebHelper
Joined: 22 Jul 2003
Posts: 9
Location: Leicester, UK
|
Posted:
Fri Oct 17, 2003 9:18 am (20 years, 6 months ago) |
|
The chatroom scripts I have checked out refresh the messages simply through a 'meta-refresh' tag in the HTML. However this refreshes the frame continuously at the specified interval as long as the page is loaded. In order to reduce the server load, I had the idea to refresh the messages only a couple of times after the user has submitted his text and then switch to a manual refresh mode (so the above code is actually not the complete thing I had in mind).
However I think it should be possible to run my script through an onLoad event handler as the form code above is reloaded anyway through the PHP script after submitting the text. |
|
|
|
|
|
Page generation time: 0.242149 seconds :: 18 queries executed :: All Times are GMT
Powered by
phpBB 2.0
© 2001, 2002 phpBB Group :: Based on an FI Theme