Side navigation
#3113 closed bug (duplicate)
Opened July 01, 2008 02:28PM UTC
Closed March 30, 2011 07:30PM UTC
Last modified March 13, 2012 02:51PM UTC
unexpected attr behavior on form with input element named 'action'
Reported by: | rryan | Owned by: | flesler |
---|---|---|---|
Priority: | low | Milestone: | 1.3 |
Component: | attributes | Version: | 1.2.6 |
Keywords: | attr | Cc: | |
Blocked by: | Blocking: |
Description
Given the following form:
<form action="someaction">
<input type="hidden" name="action" value="somevalue"/>
</form>
If you have the dom element for the form, 'f'.
f.action = "foo", sets the value of the input element, not the action attribute on the form.
f.setAttribute("action","foo") sets the action attribute on the form tag.
In jQuery, if you say $("#form").attr("action","foo"), it actually sets the input element named action to 'foo', instead of setting the attribute on the form tag. Is this a bug? 'attr' would seem to imply the functionality of 'setAttribute', not this magic 'action' accessor on the dom element.
Thanks for all your hard work!
Attachments (1)
Change History (13)
Changed July 02, 2008 02:43PM UTC by comment:1
need: | Review → Patch |
---|---|
owner: | → flesler |
status: | new → assigned |
Changed August 11, 2008 04:41PM UTC by comment:2
Slightly related: it seems impossible to select a form by using the action attribute; e.g.,
<form action="x">
</form>
$("form[action='x']") will return an empty set of nodes.
Changed February 03, 2009 04:00AM UTC by comment:4
This probably applies to any form attribute. I've confirmed action, method, and target. I suspect others will fall into this category as well, such as enctype and accept. Perhaps even coreattrs like title.
Changed March 29, 2009 04:24PM UTC by comment:5
I was able to help myself by using
$("#formid").get(0).setAttribute("action", action);
where action
is a variable containing the action value to be set.
Anyway, this is a Bug I would love to see fixed because the jQuery function does not what it is supposed to be. Since jQuery adds a Layer on the standard Javascript Implementation, it should cirumvent the Problem(s) that the Browsers Javascript Implementation has in this case.
Changed June 16, 2010 02:34AM UTC by comment:7
component: | core → attributes |
---|
Changed July 15, 2010 11:49AM UTC by comment:8
I guess this is directly related :
you can't (at least with Firefox 3.6) select a form by any of its attribute, if any field in the form has the name of the attribute.
For an exemple, if a form has an attribute 'autosubmit="yes"' and a input whose name is "autosubmit", $('form[autosubmit=yes]') doesn't select it. $('form[autosubmit]') selects it, though (the value of the input is probably used instead of the value of the attribute).
Changed November 18, 2010 08:25PM UTC by comment:10
Test case for the attr not being set: http://jsfiddle.net/eTiger13/j35Xc/2/
Similiar to this but without the input having the name of action: http://jsfiddle.net/eTiger13/j35Xc/3/
Only affects FF
Changed March 25, 2011 04:30AM UTC by comment:11
_comment0: | This is fixed with the attrhooks updates. → 1301027510697117 |
---|
This is fixed with the attrhooks updates. https://github.com/jquery/jquery/pull/265
Changed March 30, 2011 07:30PM UTC by comment:12
priority: | minor → low |
---|---|
resolution: | → duplicate |
status: | assigned → closed |
Changed March 30, 2011 07:30PM UTC by comment:13
Duplicate of #7212.
This was already spotted, we do have a solution in mind.
We'll review this for 1.3.