从外部 JS 文件中获取表单
Posted
技术标签:
【中文标题】从外部 JS 文件中获取表单【英文标题】:Obtaining form from an external JS file 【发布时间】:2015-06-21 00:19:48 【问题描述】:我想从外部 JS 文件访问表单。我的问题是,虽然我可以使用
访问单个表单document.forms[0]
和
$('form:eq(0)')
考虑到有多个表单的场景,我想选择用户当前正在使用的表单。 (可能通过 URL 或其他方式选择表单)
我想要一个通用的答案,这意味着我已经知道如何通过其 ID、类或属性访问表单。欢迎使用 jQuery 和 javascript 回答。 我对 JS 和 JQ 有点陌生,我们将不胜感激。
假设我正在使用 jQuery 验证插件, 我愿意
$('form:eq(0)').validate()
我真正想做的事
不是专门访问表单,而是动态找出用户当前正在访问的表单,例如 5 个表单,并将该表单值分配给 validate()
$('current form accessed by user').validate()
问题:我不知道如何动态访问当前表单值!
【问题讨论】:
如果您能提供更多您为解决此问题而编写的代码以便我们提供帮助,那就太好了 设身处地为我们着想。你给我们 4 个字的代码。我们甚至不知道“外部” js 文件是什么意思(“外部”对什么?对另一个 js 文件?对应该是的 html 文档?)我们没有代码示例,没有变量,没有上下文,你 想要一个普遍的答案,就像宇宙中的所有情况一样。来吧。 好的,对不起,已经用代码编辑了问题!外部意味着它只是另一个JS文件,没有你想象的那么奇怪! 您需要在事件上触发您的代码以检查正在使用的表单,例如焦点事件$('input').on('focus', function () var form = $(this).parent().validate();
等
你,我试一试,是否可以通过其URL获取当前表单值?
【参考方案1】:
您可以使用document.activeElement
获取当前具有焦点的元素,然后使用parentNode
沿链向上,直到您到达form
元素(检查.tagName
),在这种情况下您找到您要查找的表单,或者直到您到达 html
元素,在这种情况下,用户当前没有选择表单。
使用while(true)
循环的一种可能实现:
function getSelectedForm()
var el = document.activeElement;
while(true)
if(el.tagName == 'HTML')
return null;
else if(el.tagName == 'FORM')
return el;
else
el = el.parentNode;
您可能必须将函数调用为 $(getSelectedForm())
才能调用 .validate()
。
【讨论】:
以上是关于从外部 JS 文件中获取表单的主要内容,如果未能解决你的问题,请参考以下文章