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