[英]Get form parent from a widget
给定一个dojo输入窗口小部件(任何表单窗口小部件),获取窗口小部件的表单元素的最佳方法是什么? 即父元素。
即我正在寻找完成这样的功能:
function getForm(widget) {
return ( /**code goes here **/);
}
谢谢
如果您只是在寻找form元素,那么最好找到输入(或其他form内容元素)并使用其form属性。 像下面这样的东西
function getForm(widget) {
var inputNode = widget.valueNode || widget.focusNode;
if (inputNode) return inputNode.form;
return null;
}
适用于我看过的小部件。 可能会错过某些小部件,但不要认为您会得到误报。
如果表单是dijit / form / Form,则可以使用dijit / registry来获取表单(窗口小部件不仅是DOM节点)。
require( ["dijit/registry"], function( registry )
{
var formWidget = registry.getEnclosingWidget( registry.byId('form_element_id').domNode );
} );
由于表单小部件也可以在表单外部使用,因此我能想到的唯一方法与没有小部件时的方法相同:获取一个起始dom节点并向上移动直到到达一个表单节点:
function find_ancestor_of_type(ancestorTag, node){
while(node && node.tagName !== ancestorTag){
node = node.parentNode;
}
}
function get_form(widget){
return fund_ancestor_of_type("form", widget.domNode);
}
(我还没有测试过)
顺便说一句,为什么您需要这样做? 大多数时候,您可以将大多数逻辑放入表单本身(如果需要,也可以是dijit.form.Form),而输入小部件则不需要了解任何信息。
对于那些好奇的人,这对我有用:
function getForm(widget) {
return (widget.domNode.parentNode);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.