首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何收听jQuery在WordPress厚厚的上传窗口中完成的上传?

如何收听jQuery在WordPress厚厚的上传窗口中完成的上传?
EN

Stack Overflow用户
提问于 2012-06-22 03:06:09
回答 1查看 725关注 0票数 1

我正在注入一些jQuery,以使WordPress上传厚框中所需的Alt文本字段。

它拦截Insert到Post按钮,并检查字段是否已填充。

它在图片库Media Library选项卡上工作正常,但是当上传完成后,从计算机选项卡需要一个“侦听器”来更改插入到Post按钮的行为。

我试图使用setInterval,但不知道如何杀死或重新创建它,但可能有人知道是否存在侦听器,甚至如何使此代码工作,因为我怀疑我的逻辑在这里是模糊的…

这是密码,注释。

代码语言:javascript
复制
add_action('admin_head-media-upload-popup','so_11149675_required_alt_text');

function so_11149675_required_alt_text()
{
    // Detect current tab ("From Computer" == "type")
    $tab = isset($_GET['tab']) ? $_GET['tab'] : "type";

    // ( 'From Computer' or ( 'Gallery' and 'Library' ) )
    $jquery = ('type' == $tab) ? 'var refreshUpload = setInterval(function(){$(".savesend input").each(checkAltTextPermanent);},500);' : '$(".savesend input").each(checkAltTextOnce);';

    echo <<<HTML
    <script language="javascript" type="text/javascript">
        // var refreshUpload; /* testing */

        // Function called by From Computer tab
        // should run only once -> when the upload table and fields are created
        function checkAltTextPermanent() {
            // Create the required asterisk symbol
            // setInterval creates a loop here
            jQuery('.image_alt th label').each(function(i,e) {
                jQuery('<span class="alignright"><abbr title="required" class="required">*</abbr></span>').prependTo(this);
            }); 

            // Alter button behavior
            // Another loop in the alert box
            jQuery(this).click(function(e) {
                // clearInterval(refreshUpload);
                var value = jQuery(this).parent().parent().parent().find('.image_alt input').val();

                if('' != value) 
                    return true;

                alert ('Please fill the Alt text');
                return false;
            });
        }

        // Function called by Gallery and Library tabs
        function checkAltTextOnce() {
            jQuery(this).click(function(e) {
                var value = jQuery(this).parent().parent().parent().find('.image_alt input').val();

                if('' != value) 
                    return true;

                alert ('Please fill the Alt text');
                return false;
            });
        }

        jQuery(document).ready(function($) {
            // Defined in PHP, calls checkAltTextOnce or checkAltTextPermanent
            {$jquery}

            // Used in Gallery and Libray tabs
            $('.image_alt th label').each(function(i,e) {
                $('<span class="alignright"><abbr title="required" class="required">*</abbr></span>').prependTo(this);
            });
        });
    </script>
HTML;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-22 03:21:47

试试这个:

代码语言:javascript
复制
jQuery(".savesend input").live("click", validateAltText);

function validateAltText() {
    var value = $(".image_alt input").val();

    if (value) 
        return true;

    alert('Please fill the Alt text');
    return false;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11149675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档