5

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??

Erik Philips
  • 53,428
  • 11
  • 128
  • 150
daGUY
  • 27,055
  • 29
  • 75
  • 119

1 Answers1

5

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/

doublesharp
  • 26,888
  • 6
  • 52
  • 73
  • Gah, silly mistake on my part. I have a Safari plugin called BetterSource that can show you the generated HTML, but I was doing the regular "view source" instead. You're right, of course. Thanks! I need coffee... – daGUY Nov 01 '12 at 01:52
  • If you use the Developer Tools Inspect Element in Chrome or Firebug in Firefox it will do the same. – doublesharp Nov 01 '12 at 02:00