微件管理-表单提交事件?

时间:2015-08-15 作者:GavinR

我正在创建一个小部件,在用户单击“保存”或按下小部件管理面板上的enter按钮之前,我无法确定如何获取事件。获取小部件管理员表单提交上的事件的javascript代码是什么?

示例:enter image description here

谢谢

3 个回复
最合适的回答,由SO网友:webtoure 整理而成

你需要倾听click 事件(没有单击前/单击前之类的操作),然后立即执行一些工作,或者确定是否允许click 例如,“通过”或不基于某些验证。

jQuery(function($) {
    // We are binding to the body so that the code
    // will work for future elements added to the DOM
    $(\'body\').on(\'click\', \'.widget-control-save\', function(ev) {
        var my_validation = true;

        if ( my_validation ) {
            console.log(\'widget save!\');
        } else {
            ev.preventDefault();
            ev.stopPropagation(); /* We are capturing the event so it won\'t bubble up. */
        }
    })
});

SO网友:feelinferrety

请参阅上的WordPress Codex页面Widgets API 并利用update() 小部件类声明中使用的函数here 并在适当的位置添加脚本调用:

/**
 * Processing widget options on save
 *
 * @param array $new_instance The new options
 * @param array $old_instance The previous options
 */
public function update( $new_instance, $old_instance ) {
    // processes widget options to be saved
?>
    <script type="javascript">
        /*Your function here*/
    </script>
<?php
    // be sure to include normal save functions as defined by Codex / source code
}

SO网友:Domain

1) 如果您想在单击save按钮后作为第一个活动执行某些操作,那么您可以通过服务器端脚本(这里是PHP)通过挂接到某个操作来实现它,但由于您明确指定只需要客户端操作,所以我认为没有直接的方法来控制类似操作的顺序click. 但是,可以执行以下操作-

如果必须执行多个JavaScript操作,则可以相应地按顺序排列函数。e、 g.单击,func1() 应先执行,然后func2(), 所以就按这个顺序叫这些吧。

2) 如果您只需要执行一个JavaScript操作,那么无论如何都会执行它,然后在提交时执行服务器端代码。或者,如果这种方法没有首先完全执行JS函数,那么您可以使用preventDefault() 让JS函数先执行,然后仅使用JavaScript函数自动提交表单,例如:。.submit() 在jQuery中可用

3) 除此之外,我还有一个方法,我不完全确定,但可能会帮助你-你能使用吗onfocus 是否改为事件?这将在单击之前执行,并将使用鼠标和键盘。但是,缺点是无论用户是否实际提交了表单,它都将始终执行您的脚本。

4) WordPress小部件通过ajax保存小部件表单,因此您可以检查是否有任何可用的挂钩,在数据库中实际创建表单条目之前,可以在其中插入脚本并执行脚本。

结束

相关推荐

customize footer widgets area

我有一个自定义的页脚小部件区域,它在一行中水平显示最多4个小部件。如果我添加了4个以上的小部件,那么布局就会中断,因为我试图在同一行中显示它。我想让它更灵活,例如有2行(div),我可以在第一行中添加let’s 2 widget,在第二行中添加4个widget。可能我需要的是复制这一个,并制作两个页脚区域。这可能吗?如果可能,我如何实现?下面是我的小部件的实际代码。php: /* Footer Widgets */ $footer_widgets_num = wp_get_sidebars_