0

1行のテキストを取得するjQueryUIダイアログがあります。このテキストがlocalStorage辞書に含まれていない場合は、辞書に挿入します。存在する場合、「ok」ハンドラーの既存のエントリを上書きしないオプションをユーザーに提供したいと思います。

jQuery UIダイアログはステートフルであり、明示的に削除されない限り(AFAICT)、複数の呼び出しにわたって存続するため、「前のエントリを削除してもよろしいですか?」...ええと...アラートに頼らずにアラート。

簡潔に述べた質問:jQuery UIダイアログ内から確認ボックスを作成できますか?

ありがとう。

4

3 に答える 3

0

私は jQuery UI ダイアログを使用していませんが、いつでも独自の html 要素を作成し、jQuery ダイアログの上にレイヤー化するなど、好きなことを行うことができます。

于 2012-07-19T23:39:33.577 に答える
0

これらのリンクを見つけるために何かをグーグルで検索した可能性があると思います:

とにかくそれを持って楽しんでください:

  1. JQuery ダイアログ
  2. Jクエリの確認

乾杯!!!

于 2012-07-20T12:46:27.460 に答える
0

わかりました、これを処理するために私が見つけた最良の方法はクロージャーを使用することでした。このように(疑似コード):

getThingieName: handler(function() {
  var $dialog;
  $dialog = $('<div id="thingie-name-dialog" class="ui-widget"></div>').html("<p>Enter a name for this thingie</p>\n<input type=\"text\" id=\"dlg-thingie-name\" style=\"width: 80%\" />").dialog({
    autoOpen: false
  }, {
    title: 'enter a name',
    modal: true,
    buttons: {
      Add: function() {
        var value = $('#dlg-thingie-name').val();
        $(this).dialog('close');
        $('#thingie-name-dialog').remove();
        return handler(value);                  // <= closure to handle the onAdd
      },
      Cancel: function() {
        $(this).dialog('close');
        return $('#thingie-name-dialog').remove();
      }
    }
  });
  return $dialog.dialog('open');
}),

getConfirmation: function(message, handler) {
  var $dialog;
  $dialog = $('<div id="confirmation-dialog" class="ui-widget"></div>').html("<p>" + message + "</p>").dialog({
    autoOpen: false
  }, {
    title: 'confirm overwrite',
    modal: true,
    buttons: {
      Ok: function() {
        $(this).dialog('close');
        $('#confirmatio-dialog').remove();
        return handler(true);               // <= closure to handle onOk
      },
      Cancel: function() {
        $(this).dialog('close');
        $('#Thingie-name-dialog').remove();
        return handler(false);              // <= closure to handle onCancel
      }
    }
  });
  return $dialog.dialog('open');
}

// Calling sequence
Snippets.getSnippetName(function(value) {
  if (value == null) return false;
  if (localStorage.getItem(value)) {
    getConfirmation("This thingie, " + value + ", already exists. Overwrite?", function(response) {
      if (response) return localStorage.setItem(value, snippet);
    });
  } else {
    localStorage.setItem(value, snippet);
  }
}

これは最適なコードではないかもしれませんが、ハンドラーにダイアログを埋め込むことで、ボタンのプッシュに依存するダイアログのトリガーを作成します。

于 2012-07-20T17:47:57.733 に答える