Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在WordPress Thickbox上传窗口中监听jQuery完成的上传?_Javascript_Jquery_Wordpress - Fatal编程技术网

Javascript 如何在WordPress Thickbox上传窗口中监听jQuery完成的上传?

Javascript 如何在WordPress Thickbox上传窗口中监听jQuery完成的上传?,javascript,jquery,wordpress,Javascript,Jquery,Wordpress,我正在注入一些jQuery,以使WordPress upload中所需的Alt文本字段变厚 它截取插入到Post中的按钮单击,并检查字段是否已填充 “多媒体资料”和“媒体库”选项卡可以正常工作,但“来自计算机”选项卡在上载完成时需要一个“侦听器”,以改变“插入到帖子”按钮的行为 我正在尝试使用setInterval,但不知道如何杀死或重新创建它,但可能有人知道是否存在侦听器,或者甚至知道如何使此代码工作,因为我怀疑我在这里的逻辑是模糊的 这是代码,评论道 add_action('admin

我正在注入一些jQuery,以使WordPress upload中所需的Alt文本字段变厚

它截取插入到Post中的按钮单击,并检查字段是否已填充

“多媒体资料”和“媒体库”选项卡可以正常工作,但“来自计算机”选项卡在上载完成时需要一个“侦听器”,以改变“插入到帖子”按钮的行为



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

这是代码,评论道

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;
}
add_action('admin_head-media-upload-popup','so_11149675_required_alt_text');
函数so_11149675_必需_alt_text()
{
//检测当前选项卡(“从计算机”=“类型”)
$tab=isset($\u GET['tab'])?$\u GET['tab']:“type”;
//(“来自计算机”或(“图库”和“库”))
$jquery=('type'=$tab)?'var refreshUpload=setInterval(函数(){$(“.savesend输入”).each(checkAltTextPermanent);},500);':'$(“.savesend输入”).each(checkAltTextOnce);';
echo试试这个:

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;
}
试试这个:

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;
}

一旦上传文件,就会在ThickBox中创建
.image\u alt
。此时,我需要在
输入按钮中添加
单击()
侦听器。我试图将代码包装到
jQuery(文档)中。就绪(函数($){…})
但没有工作…感谢您的输入。啊,我想这是因为该方法正在调用自身。请使用“编辑”重试。可能误解在于何时启动验证。如果用户单击对话框右上角的“关闭”按钮,或者如果用户在后台单击,上面的代码将验证文本David,正如我在问题
$(“.submit.savesend input”)中所说的那样
在jQuery文档准备就绪时不存在…您的代码仅适用于已经存在的DOM元素,而不适用于上传文件后创建的元素…上传文件后,让我们尽快在ThickBox中创建
。image\u alt
。此时我需要添加
单击()
输入按钮中的监听器。我试图将您的代码包装到
jQuery(文档)中。就绪(函数($){…})
但没有工作…感谢您的输入。啊,我想这是因为该方法正在调用自身。请使用“编辑”重试。可能误解在于何时启动验证。如果用户单击对话框右上角的“关闭”按钮,或者如果用户在后台单击,上面的代码将验证文本David,正如我在问题
$(“.submit.savesend input”)中所说,
在jQuery文档准备就绪时不存在……您的代码只适用于已经存在的DOM元素,而不适用于上传文件后创建的元素……让我们来看看