2

我使用小部件工厂创建了一个小部件,并添加<input>了它所需的元素。这个小部件可以在form元素内部初始化,从而在提交父表单时提交添加的字段。

我想告诉form不要提交指定的输入,这必须在小部件内完成,因为这是知道添加input元素的那个。

这个想法是从内部小部件中获取最接近form的并在提交表单之前禁用输入(例如.prop("disabled", true)),然后重新启用它们。

重要的是不要打扰小部件之外的代码,我想保持低耦合。

不幸的是,在_create小部件期间,this.element没有添加到,DOM因此无法向表单的提交事件添加处理程序。

示例代码:

$(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作为选项传递,但这是我想避免的。

4

0 回答 0