我如何让我的媒体上传器按钮只需点击一次即可工作,而不是只需点击两次?

时间:2017-02-09 作者:Craig

UPDATE: 我已更正以下代码,以反映解决我问题的答案。

我已经创建了一个自定义管理页面,并设法使我的所有字段和保存按钮都能正常工作。

在上述自定义管理页面中,我有一个“上载配置文件图像”按钮。该按钮工作正常,在触发“上载媒体”窗口方面,有一个问题,第一次单击该按钮不起作用。一旦我完成了第一次“错误单击”,所有后续的单击都会起作用,直到我重新加载页面,第一次单击不再起作用。

这是我第一次正确地使用JavaScript,所以我不完全确定错误在哪里。下面是我正在使用的JavaScript代码:

jQuery(document).ready(function($){

    var mediaUploader;

    $(\'#upload-button\').on(\'click\',function(e) {
        e.preventDefault();
        if( mediaUploader ){
            mediaUploader.open();
                return; 
        }

        mediaUploader = wp.media.frames.fle_frame = wp.media({
            title: \'Choose a Profile Picture\',
            button: {
                text: \'Choose Picture\'
            },
            multiple: false
        })

        mediaUploader.on(\'select\', function(){
            attachment = mediaUploader.state().get(\'selection\').first().toJSON();
            $(\'#profile-picture\').val(attachment.url); //Was missing this line.
        });

        mediaUploader.open(); //As soon as I entered this line here, it resolved my \'double click\' issue.

    });

});
是否有人能够看到我的编码中是否有导致此问题的原因?

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

我刚刚猜出了答案。我错过了mediaUploader.open(); 进入我已经相应地修改了我的原始代码,以防有人有同样的问题。

SO网友:HireWeb Xpert
function insertuploder(upid){
     this.disabled = true;
    var ures = upid.split("_");
    var uplt = ures[3];

var mediaUploader;

  jQuery(\'#\'+upid).on(\'click\',function(e) {
    e.preventDefault();
      if (mediaUploader) {
      mediaUploader.open();
      return;
    }
      console.log(mediaUploader);
    mediaUploader = wp.media.frames.file_frame = wp.media({
      //title: \'Choose Image\',
      button: {
      text: \'Choose Image\'
    }, multiple: false });
    mediaUploader.on(\'select\', function() {
      var attachment = mediaUploader.state().get(\'selection\').first().toJSON();
        console.log(attachment);
      jQuery(\'#background_image_\'+uplt).val(attachment.url);
    });
    mediaUploader.open();
  });

}

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请