从外部 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 文件中获取表单的主要内容,如果未能解决你的问题,请参考以下文章

驰骋表单设计器的外部接口

从 vb.net 中的表单外部获取突出显示的文本

使用 parsley.js 验证表单提交外部表单标记

17.FastAPI 表单数据

Vue js,使用 TypeScript 从 Vue 中的表单获取数据

调用webpack打包后的js中的函数报错问题