複数指定したいのですが簡単な方法ってありますでしょうか?
具体的には基本的な設定は全ダイアログで共通なのですがbuttonsの設定をそれぞれで変えたく思っています。
想定のパターンとしては以下の通りです。
・OkとCancelボタン
・Okボタン
・ボタンなし
単純に必要な分だけ同様に加えればできるかと思うのですがあまりにも単調な気が・・・
現在のhtmlとjsは以下の通りです。詳しい方がいらっしゃいましたら宜しくお願い致します。
<a href="#" id="dialog_link">Open Dialog</a>
<div id="dialog" title="title">内容</div>
// Dialog
$('#dialog').dialog({
autoOpen: false,
buttons: {
"Ok": function() {
//処理
},
"Cancel": function() {
//処理
}
}
});
// Dialog Link
$('#dialog_link').click(function(){
$('#dialog').dialog('open');
return false;
});
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
あー、細かいところで書き間違いがいくつかあるが、とりあえず以下で動くと思う。
// Dialog
function showDlg(n){
var open;
var size;
var btns;
switch(n){
case 0:
open = false,
size = 400,
btns = {};
break;
case 1:
open = true,
size = 500,
btns = {
"Ok":function(){
$(this).dialog("close");
}
};
break;
case 2:
open = false,
size = 600,
btns = {
"Ok":function(){
$(this).dialog("close");
},
"Cancel":function(){
$(this).dialog("close");
}
};
break;
}
$('#dialog').dialog({
autoOpen: open,
width: size,
modal: true,
buttons: btns
});
$('#dialog').dialog('option', 'autoOpen', true);
$('#dialog').dialog('option', 'width', size);
$('#dialog').dialog('option', 'buttons', btns);
$('#dialog').dialog('open');
}
$(document).ready(function(){
// Dialog Link
$('#dialog_link0').click(function(ev){
showDlg(0); // ボタンなしで表示
return false;
});
$('#dialog_link1').click(function(ev){
showDlg(1); // "ok"ボタンを表示
return false;
});
$('#dialog_link2').click(function(ev){
showDlg(2); // "ok","cancel"ボタンを表示
return false;
});
});
まだ読み込んでないタグのDOMを利用した初期化処理は、$(document).readyでやらないとうまく機能しないので注意。他は、だいたいケアレスミスなのでよく見てほしい。
No.2
- 回答日時:
>箇所のみautoOpenをtrueにしたく以下のように設定してみましたがうまくいきません。
>このような事をする場合どうすればいいのでしょうか?
そのような場合には、
dialog('option',属性,値)
こんな感じで呼び出して、明示的にプロパティの値を変更すればいいと思う。dialog('option','autoOpen',true)とかで修正できるはず。(今、ちと手元に環境がないので試してないが)
この回答への補足
ご丁寧にお返事頂きありがとうございます。
最初のサンプルの見よう見まねではありますが以下のように設定したところjsが機能しなくなってしまいました。
// Dialog
function showDlg(n){
var open;
var size;
var btns;
switch(n){
case 0:
open: false,
size: 400,
btns = {};
break;
case 1:
open: true,
size: 500,
btns = {
"Ok":function(){
$(this).dialog("close");
}
};
break;
case 2:
open: false,
size: 600,
btns = {
"Ok":function(){
$(this).dialog("close");
},
"Cancel":function(){
$(this).dialog("close");
}
};
break;
}
$('#dialog').dialog({
autoOpen: open,
width: size,
modal: true,
buttons: btns
});
$('#dialog').dialog('option', 'autoOpen', open);
$('#dialog').dialog('option', 'width', size);
$('#dialog').dialog('option', 'buttons', btns);
$('#dialog').dialog('open');
}
// Dialog Link
$('#dialog_link0').click(function(){
showDlg(0); // ボタンなしで表示
return false;
});
$('#dialog_link1').click(function(){
showDlg(1); // "ok"ボタンを表示
return false;
});
$('#dialog_link2').click(function(){
showDlg(2); // "ok","cancel"ボタンを表示
return false;
});
また、気になる事があるのですかた上記からsizeの定義を全て外すと動作するのですがダイアログに
表示する内容が最初から表示されてしまいます。
※一度ダイアログを開いて閉じると表示されなくなるようです
<div id="dialog" title="title" style="display: none;">
ダイアログの内容
</div>
としdisplay: none;を入れるとひとまず解決できるのですがデモでは表示されなかったので
どうにかならないものかと。。。
No.1
- 回答日時:
つまり、呼び出す際に、表示するボタンなどをカスタマイズして表示できるようにしたい、ということだろうか。
ならば、表示する前に必要な設定を行えばいい。function showDlg(n,msg){
var btns;
switch(n){
case 0:
btns = {};
break;
case 1:
btns = {"Ok":function(){alert('ok');$(this).dialog("close");}};
break;
case 2:
btns = {"Ok":function(){alert('ok');$(this).dialog("close");},"Cancel":function(){alert('cancel');$(this).dialog("close");}};
break;
}
$('#dialog').text(msg);
$('#dialog').dialog({modal:true,buttons:btns});
$('#dialog').dialog('option','buttons',btns);
$('#dialog').dialog('open');
}
例えば、こんな感じで、ダイアログを呼び出す際の設定などを行ってから表示するように調整しておく。この場合だと、
showDlg(0,'テスト0'); // ボタンなしで表示
showDlg(1,'テスト1'); // "ok"ボタンのみ表示
showDlg(2,'テスト2'); // "ok","cancel"ボタンを表示
こんな具合に表示するボタンとメッセージを設定できる。
お返事ありがとうございます。
説明不足なようでしたが思い通りの事ができました!1つ質問なのですがOKボタンのみを表示する
箇所のみautoOpenをtrueにしたく以下のように設定してみましたがうまくいきません。
このような事をする場合どうすればいいのでしょうか?
function showDlg(n, msg){
var btns;
var open;
switch(n){
case 0:
open: false,
btns = {};
break;
case 1:
open: false,
btns = {
"Ok":function(){
$(this).dialog("close");
}
};
break;
case 2:
open: true,
btns = {
"Ok":function(){
$(this).dialog("close");
},
"Cancel":function(){
$(this).dialog("close");
}
};
break;
}
$('#dialog').text(msg);
$('#dialog').dialog({
autoOpen: open,
buttons:btns
});
$('#dialog').dialog('option', 'buttons', btns);
$('#dialog').dialog('open');
}
$('#dialog_link').load(function(){
showDlg(1); // "ok"ボタンを表示
return false;
});
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- 英語 I read the dialog aloud until I can read it smooth 3 2022/04/17 21:37
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数でy=g(x)のgとは何の略です...
-
idを使わずにonclickで自身の要...
-
functionから別のfunctionを実...
-
コードをスマートにさせたい。
-
function(e)の意味を教えてくだ...
-
getElementByIdを使用したグロ...
-
関数名をテキストから読み込む...
-
JavaScriptで変更されたくない...
-
jQueryの :not() .not() が有効...
-
無名関数を使うメリットは何で...
-
google apps scriptの終了のさせ方
-
Boolean型配列中のTrueの有無を...
-
<a>タグのテキストを取得
-
【正規表現】【javascript】CR...
-
jspからjavascriptの変数引継ぎ
-
なぜmatchメソッドがエラーにな...
-
ジェネレーターの作り方
-
【Jquery】changeイベント毎にa...
-
GASでundefinedエラーが出ます
-
カンマで終わってるのはセミコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数でy=g(x)のgとは何の略です...
-
idを使わずにonclickで自身の要...
-
functionから別のfunctionを実...
-
jslintのエラーについて質問
-
要素名がスペースを含む場合のj...
-
javascript(jQuery)でセル内...
-
ajax反映後のjqueryが動かない
-
jQueryの :not() .not() が有効...
-
getElementByIdを使用したグロ...
-
コードをスマートにさせたい。
-
クリックすると上に開くアコー...
-
jQueryの"return false"の役割...
-
jQueryが読み込めない
-
個別では動く、javascriptのエラー
-
一つのアクションで関数を二つ...
-
jqueryの変数を関数の外に出す方法
-
R言語
-
jQuery|:not(:animated)
-
即時関数でプライベート変数的...
-
スムーズに動く アニメーション...
おすすめ情報