我已使用widget factory创建了一个小部件,并添加了<input>
所需的元素。可以在form
元素内初始化此窗口小部件,从而在提交父窗体时提交添加的字段。
我想告诉form
不要提交指定的输入,这必须在小部件内完成,因为这是知道添加的input
元素的人。
我们的想法是从内部窗口小部件中获取最接近的form
并在提交表单之前禁用输入(例如.prop("disabled", true)
),然后重新启用它们。
重要的是不要打扰小部件之外的代码,我希望保持较低的耦合。
不幸的是,在小工具的_create
期间,this.element
未添加到DOM
,因此无法在表单中添加处理程序&#39}提交活动。
示例代码:
$(function ()
{
$.widget("Foo.Widget",{
_create: function(){
this.element.append($("<input type='radio'>").attr("name", "theInput"));
// bind to the containing form's submit event
var form = this.elemeng.closest("form"); // returns $()
};
});
});
可以绑定后者,但这需要用户以某种方式与窗口小部件进行交互,这不是强制性的。
我可以添加一个计时器并将其绑定一点,因为用户在前几秒内不会提交它(邪恶的解决方案)。
此外,我可以传递窗口小部件的上下文或父form
作为选项,但这是我想要避免的。