Okay, I must be missing something here because this should be extremely simple, yet it doesn't work...
I have a form
on my page with an empty action
attribute (action="#"
). When the page is ready, I want to change the action
attribute to something else. My code is very simple:
HTML:
<form action="#" method="post" id="register"></form>
jQuery:
$("#register").attr("action", "http://www.test.com");
Even in a test fiddle, it doesn't work! View the source of the Result frame and you'll see the value of the action
attribute is still #
.
Where am I going wrong??
The action attribute specifies where to send the form-data when a form is submitted.
I found that changing the form's action caused example.com/index.pl (with no page parameter) to be rendered, even though the expected URL ( example.com/page-name ) was displayed in the address bar. To get around this, I used JavaScript to insert a hidden field to set the page parameter.
prop() returns the full action url: To use the action attribute of a form use: $( '#myForm' ). attr( 'action' ); like @JAAulde said.
It does work, you aren't testing it properly. Viewing source will show you what the source looked like when the page was loaded, not after it as modified by jQuery. If you alert()
action value after it is fetched with jQuery, you will see the new value:
alert($("#register").attr("action"));
It's also generally a good idea to make sure that the DOM has loaded before you make any changes, for which you can use ready()
:
$(document).ready(function(){ /* your code */ });
Check out: http://jsfiddle.net/wvYjs/2/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With