【发布时间】:2012-09-25 14:31:06
【问题描述】:
我正在尝试获取放置在表单操作中的实际字符串。问题是当我这样做时,即使相对路径在 HTML 中,action 属性也会解析为绝对路径。如何获取 action 属性中的实际字符串?
这是我所指的示例: http://jsfiddle.net/MSY4s/
【问题讨论】:
标签: javascript jquery forms dom
我正在尝试获取放置在表单操作中的实际字符串。问题是当我这样做时,即使相对路径在 HTML 中,action 属性也会解析为绝对路径。如何获取 action 属性中的实际字符串?
这是我所指的示例: http://jsfiddle.net/MSY4s/
【问题讨论】:
标签: javascript jquery forms dom
如果您已经在使用 jquery,我会使用 .attr 函数,而不是从 jQuery 对象中提取 DOM 元素。像这样:
$("form").attr("action");
这应该给你真正的动作属性。在您提供的示例中,它应该看起来像“/somewhere”。 jFiddle 中的第二个示例将显示完整路径,因为那是 action 属性中的内容。
【讨论】:
相对 URL 总是根据当前文档的 URL 解析为绝对 URL。
【讨论】:
jQuery.attr 或getAttribute 清楚地检索时。
jQuery
getAttribute 并且不会评估为绝对 URL。正如 lonesomeday 指出的那样,这可能是属性和属性之间的区别。
试试这个:
提供两个表单 ID:
<form id="form1" action="/somewhere" method="post">
<input type="text" name="test" />
</form>
<form id="form2" action="https://fiddle.jshell.net/somewhere2" method="post">
<input type="text" name="test" />
</form>
然后使用这些id就可以得到每个表单的action属性:
$('#form1').attr('action');
$('#form2').attr('action');
您也可以使用相同的标签设置动作属性:
$('#form1').attr('action', '[New Action Value]');
$('#form2').attr('action', '[New Action Value]');
希望这会有所帮助。
【讨论】: