1

私のウェブサイトのjQueryConfirmコードで非常に奇妙な問題が発生しています。Nadia Alramli(http://nadiana.com/jquery-confirm-plugin)によって設計されたプラグインを使用しています

このプラグインは、適用されている要素のアクションを停止し、最初に確認ダイアログを提供します。これは、自分が開発した資金調達管理システムの「アクションボタン」に使用しています。最近まですべてが正常に機能していましたが、文字通り突然、コードが機能しなくなりました。確認ダイアログが表示されますが、「はい」をクリックしてもボタンのアクションは実行されません。

コードをチェックして再チェックしましたが、最初に実装された方法から何も変更されていません。他のすべての不要なコードを削除したサンプルページも作成しましたが、それでも同じ問題が発生します。これが私のサンプルページへのリンクです: http ://www.greeleyw2w.org/admin/example2.html

何がこのようなことを引き起こす可能性がありますか?私が考えることができる唯一のことは、私のWebホスト(GoDaddy)の問題か、GoogleがホストするバージョンのjQueryの問題です。

//Actions for the status change buttons
$(document).ready(function(){
$("#test").click(function(){ //The action of the button
    alert("You confirmed the button click.");
});

$('.confirm').confirm({ //Captures button action, asks for confirmation.
    msg:'Are you sure?',
    wrapper:'<span style="color:#099"></span>',
    dialogShow:'fadeIn',
    dialogSpeed:'slow',
    buttons: {
        wrapper:'<button></button>',
        separator:'  '
    }
});
});
4

4 に答える 4

4

JQuery1.8とは互換性がありません。

43行目あたりで、コードを次のように変更します。

var events = jQuery.data(target、'events');

var events = jQuery._data(target、 "events");

APIが削除されたため、イベントモデルは1.8で壊れました。

http://blog.jquery.com/2012/08/09/jquery-1-8-release

于 2012-12-04T01:41:12.063 に答える
0

コードをから変更してみてください

$('.confirm').confirm({
   ....
});

$('#test').confirm({
   ....
});
于 2012-10-17T04:26:41.073 に答える
0

「はい」ボタンのIDを見逃していると思います。ここにあなたのコード:

<span style="color: rgb(0, 153, 153); display: none;">
Are you sure?
<button>Yes</button>
<button>No</button>
</span>
<input id="test" class="confirm" type="button" style="display: inline;" value="Test Confirm Function" />

したがって、ID属性を[はい]ボタンに追加して、HTMLコードを変更します。以下の改訂されたコードを見てください。

<span style="color: rgb(0, 153, 153); display: none;">
Are you sure?
<button id="test">Yes</button>
<button>No</button>
</span>
<input class="confirm" type="button" style="display: inline;" value="Test Confirm Function" />

または、JavaScriptアクションセクションを次のように変更できます。

$('button').click(function(){
  alert("You confirmed the button click."); 
});

「2番目の例」のプラグインのドキュメントを見てください。これはあなたの場合と似ています。

于 2012-10-17T04:28:46.447 に答える
0

jqueryで確認し、コードを次のように置き換えます。

/**
 * Confirm plugin 1.3
 *
 * Copyright (c) 2007 Nadia Alramli (http://nadiana.com/)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 */

/**
 * For more docs and examples visit:
 * http://nadiana.com/jquery-confirm-plugin
 * For comments, suggestions or bug reporting,
 * email me at: http://nadiana.com/contact/
 */

jQuery.fn.confirm = function(options) {
  options = jQuery.extend({
    msg: 'Are you sure?',
    stopAfter: 'never',
    wrapper: '<span></span>',
    eventType: 'click',
    dialogShow: 'show',
    dialogSpeed: '',
    timeout: 0
  }, options);
  options.stopAfter = options.stopAfter.toLowerCase();
  if (!options.stopAfter in ['never', 'once', 'ok', 'cancel']) {
    options.stopAfter = 'never';
  }
  options.buttons = jQuery.extend({
    ok: 'Yes',
    cancel: 'No',
    wrapper:'<a href="#"></a>',
    separator: '/'
  }, options.buttons);

  // Shortcut to eventType.
  var type = options.eventType;

  return this.each(function() {
    var target = this;
    var $target = jQuery(target);
    var timer;
    var saveHandlers = function() {
      var events = jQuery.data(target, 'events');
      if (!events && target.href) {
        // No handlers but we have href
        $target.bind('click', function() {document.location = target.href});
        events = jQuery.data(target, 'events');
      } else if (!events) {
        // There are no handlers to save.
        return;
      }
      target._handlers = new Array();
      for (var i in events[type]) {
        target._handlers.push(events[type][i]);
      }
    }

    // Create ok button, and bind in to a click handler.
    var $ok = jQuery(options.buttons.wrapper)
      .append(options.buttons.ok)
      .click(function() {
      // Check if timeout is set.
      if (options.timeout != 0) {
        clearTimeout(timer);
      }
      $target.unbind(type, handler);
      $target.show();
      $dialog.hide();
      // Rebind the saved handlers.
      if (target._handlers != undefined) {
        jQuery.each(target._handlers, function() {
          $target.click(this.handler);
        });
      }
      // Trigger click event.
      $target.click();
      if (options.stopAfter != 'ok' && options.stopAfter != 'once') {
        $target.unbind(type);
        // Rebind the confirmation handler.
        $target.one(type, handler);
      }
      alert("You confirmed the button click.");
      return false;
    })

    var $cancel = jQuery(options.buttons.wrapper).append(options.buttons.cancel).click(function() {
      // Check if timeout is set.
      if (options.timeout != 0) {
        clearTimeout(timer);
      }
      if (options.stopAfter != 'cancel' && options.stopAfter != 'once') {
        $target.one(type, handler);
      }
      $target.show();
      $dialog.hide();
      return false;
    });

    if (options.buttons.cls) {
      $ok.addClass(options.buttons.cls);
      $cancel.addClass(options.buttons.cls);
    }

    var $dialog = jQuery(options.wrapper)
    .append(options.msg)
    .append($ok)
    .append(options.buttons.separator)
    .append($cancel);

    var handler = function() {
      jQuery(this).hide();

      // Do this check because of a jQuery bug
      if (options.dialogShow != 'show') {
        $dialog.hide();
      }

      $dialog.insertBefore(this);
      // Display the dialog.
      $dialog[options.dialogShow](options.dialogSpeed);
      if (options.timeout != 0) {
        // Set timeout
        clearTimeout(timer);
        timer = setTimeout(function() {$cancel.click(); $target.one(type, handler);}, options.timeout);
      }
      return false;
    };

    saveHandlers();
    $target.unbind(type);
    target._confirm = handler
    target._confirmEvent = type;
    $target.one(type, handler);
  });
}
于 2012-10-17T04:43:32.350 に答える