I have been having trouble. For the past two days I have been trying to create a webpart that has two text boxes and a bunch of a Links as buttons (brand issue no nasty submit buttons).
I had a bit of Jscript that called the navigate of my main image link button so it did a post back. This worked till I did a little more testing with more parts and the add new web part sidebar opened. Every time I hit enter in this scenario it started adding web parts. At first I thought some clown is messing with my test portal, but soon realised that the submit button of the form was being executed. So I added a cancelBubble. No joy. I tried various incarnations of the __doPostBack call to see if that was the problem. (its been a while since I did real hardcore jscript ie4/5 change over period last time, so cancelBubble was all I knew about event problems).
I found this article by Dino.
It is some code for a PostTextBox that fires an enter pressed, well thought piece of work, goes a little beyond what I had in mind, but essentially the same code client side with the bonus server side event thrown. Well as you can guess this works fine on a single form page, but anything more complicated and forget it, exactly the same problems again.
I gave up. So I thought Ajax. That will do, done that before 8 years ago, so I knocks up more jscript with http request to my webservice. Works great and fast, but I was concerned about the client installations having MSXML on them. A bit of a scout round and other standard desktops give me security messages, as obviously I’m accessing a web service that is not on the portal web. Can’t have that. I know I’ll go real old school and hidden Iframe my posts instead. And Again in previous projects this approach works great as its contained within the same site, this time I get an access denied in trying to access the parent windows html and the parent just cant access the child’s html.
What next, I know I ‘ll know up a http fetcher page in portal so I can call it local and it returns the results as a local proxy. No too evil.
So back to google. I need to get the postback working.
This guy came to the rescue.
Two additional lines of code to my original and it all works
window.event.returnValue = false;
window.event.cancel = true;
Had no idea about returnValue, some dim recollection of event.cancel, but I never thought to put that in. now I have.
My web part works I can hit enter and I get my search results, not as slick as AJAX or hidden IFRAME (which by the way is how the old Plumtree gadget I wrote worked). but problem solved.
Lets make it better.
Merge the two. I now have a PostTextBox control that has enter hit events and doesn’t give me additional postbutton grief.