ママのスキンケアのお悩みにおすすめアイテム

いつもお世話になっています。

<script language="JavaScript">
<!--
function startConfirm(){
confirm("本当によろしいですか?");
}
// -->
</script>
</head>

(中略)

<form action="next.asp" target="_top" name="me">
<td>
<input TYPE="submit" value="全削除" name="all_del" onclick="startConfirm()">
</td>
</form>

と、このようなボタンを押したときに確認メッセージを表示させています。
キャンセルを押した場合にnext.aspに遷移せず、自分の画面に戻る
または他の画面に遷移させたいのです。

startConfirm()の中に処理を書けば良いのでしょうが、哀しいかな、わかりません(涙)。
やり方をご存知の方、教えてください。

alertでOKを押された時の処理を任意に行う方法も教えていただけたら嬉しいです。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

こんにちはさん、xruzです。


submitボタンにこだわらずscriptでsubmit()すれば柔軟に対応できますよ。
こんな感じではいけませんか?

<html>
<head>
<title>submit</title>
</head>
<script language="javascript">
<!--
function frmSubmit() {
var errFlag=true;
// チェックとか処理とかをします
if(errFlag==false) {
// alert("Err"); // エラー処理かな
return;
}
if(confirm("Send Ok?")) {
// document.frm.target="main"; // 表示先の変更
// document.frm.action="hoge.asp"; // リンク先の変更
document.frm.submit();
} else {
// this.location.href="jump.cgi"; // キャンセルした場合のリンク先?
}
}
//-->
</script>
<body>

<form method="post" action="" name="frm" target="_self">

<input type="button" value="send" onclick="frmSubmit();">
</form>

</body>
</html>

がんばってくださいね。
    • good
    • 2
この回答へのお礼

本当に丁寧な回答、ありがとうございます。
お礼が大変遅くなってすみませんでした・・・。

貼り付けたら見事に動きました(当たり前だ)。感動です。
コメントもつけて頂いていたので、どこに何を書いたらどう動くのかすぐわかり、
これまた大変ありがたかったです。

このコメント付きのソースを色々加工させて頂いて、
さらにややこしいエラー処理などに挑戦したいと思います。

また機会がありましたら、教えてやって下さい(ペコリ)。

お礼日時:2001/10/19 18:11

まず、confirm()の使い方ですが戻り値を使います



if(confirm("いいですか~")==true){
 // OK ボタンが押されたときの処理
}else{
 //キャンセルボタン が押されたときの処理
}


次に、画面遷移についてですが、

>input TYPE="submit" value="全削除" name="all_del" onclick="startConfirm()">

の意味は「全削除」ボタンを押したら、(確認してOKだったら)フォームの内容を送信するということでしょうか?

だとすると、FORMタグのonSubmitイベントハンドラに書くのが一般的です

<FORM NAME="formmname" ACTION="送信先" onSubmit="return startConfirm()">
<INPUT TYPE="submit" VALUE="全削除">
</FORM>

…ここまで書いてたら、下記にずばりな回答がありましたので、これは補足で見て下さい。
    • good
    • 0
この回答へのお礼

早速の回答、ありがとうございます。
なのにお礼が遅くなってすみません・・・。

画面遷移の
<input TYPE="submit" value="全削除" name="all_del" onclick="startConfirm()">
の意味もkana-tanさんの想像通りです。

今までsubmitボタンの中にonClickで書くとばかり思ってました。
onSubmitで書くのは、enterキーを押した時でも動作できるようにするためなのでしょうか?

あと、補足だなんてとんでもないです。
キャンセルボタンが押された時の処理を行う方法を書いて頂いてありがたかったです。
かなり利用できる発想を頂きました。

また機会がありましたら、よろしくお願いします(ペコリ)。

お礼日時:2001/10/19 17:59

confirmはOKボタンが押された時にtrue、キャンセルボタンが押された時にfalseが返ってきます。


これを利用して
フォームタグを
<form action="next.asp" target="_top" name="me" onSubmit="return startConfirm()">
スクリプトを
function startConfirm(){
return (confirm("本当によろしいですか?"));
}
という風にすれば、押されたボタンの結果が返り、OKならnext.aspが呼び出されるという感じになります。

alertは、フォームの記述が上と同じだった場合、
表示した後にtrueを返すとnext.aspを実行、
falseを返すとそのまま何も実行しない。
というどうさになります。
    • good
    • 0
この回答へのお礼

早速の回答、ありがとうございました。
返事が遅くなってすみません・・・。

貼り付けるだけでできました。
丁寧かつ親切な回答で助かりました。

また機会があったら教えてやって下さい(ペコリ)。

お礼日時:2001/10/19 17:51

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qconfirm の OK、キャンセル 以外の文字を

javascript の confirm  で、OK、キャンセル以外の文字を出す方法を探しています。

「出せません」とか、「showModalDialog を使用し自作のダイアログ」とかしか見つかりません。

JavaScript だけで、出来ないものなのでしょうか?

Aベストアンサー

jQueryUIのDialogでできます。

以下のサイトの下の方に例が載っていて、そのうちDialog3の例で
OK、キャンセル以外の文字を設定しています。
http://stacktrace.jp/jquery/ui/widgets/dialog.html

Javascriptだけで実現していますが、confirmを使っていないので
質問の意図からはずれてるかもしれませんが。

Qasp.net メッセージボックス表示後の判定

削除ボタン押下時の処理でメッセージダイアログを表示しました。
この後、ダイアログのOKボタンを押された時の処理をコーディングしたいのですが、
どうすれば「OKボタン」or「キャンセル」どちらが押されたか判定できるのですか?
お願いします。

Protected Sub BtnDel_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BtnDel.Click
’ダイアログ表示
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "msgbox", "confirm('" & "削除してもよいですか?" & "');", True)
’OKボタンが押された時削除処理を行う
<ここが不明>
End Sub

Aベストアンサー

http://www.atmarkit.co.jp/fdotnet/asp2review/asp2review09/asp2review09_01.html

QASP.NETでのメッセージ画面を出すには

はじめまして。
ASP.NET(C#)で、開発をしています。
例えば、内部である処理が終わった後に「完了!」みたいなメッセージ画面をポップアップさせたいと思っております。いろいろ調べてはいるんですが、方法がわかりません。JSを使わなければならないのかなとは思いますが、具体的な方法がわかりません。
よい方法がありましたら、教えていただけないでしょうか。よろしくお願いいたします。

Aベストアンサー

確認は取れていませんが、多分以下のHPの内容でいけると思いますが…。
参考に如何でしょうか。

・ASP.NETでメッセージボックス(OK・NO)の処理について
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5952&forum=7&6

・Webアプリでメッセージボックスを使いたい
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1644&forum=7&7

QonClickで関数呼出し後に、結果に応じてsubmitを実行する方法

JavaScriptで、
function func() {
 if (a==0) {
  alert("処理しない");
  return false;
 }
 return true;
}
と、a=0ならfalseを返し、それ以外ならtrueを返す関数を定義しています。

そして、FORMタグで
<FORM NAME="FormName" ACTION="next.html">
<INPUT TYPE="button" VALUE="next" NAME="button1" onClick="return func();submit();">
</FORM>
と記述しています。
要は、ボタンを押下した際にfunc関数がtrueを返せば、next.htmlに
遷移させたいのですが、上記記述では、遷移しません・・・
onClick部分にonClick="return func(),submit();"と記述した場合、
func関数の実行結果がtrueでもfalseでも遷移してしまいます。
そこで、なんとなくonClick="return func()&&submit();"と記述してみたところ、
func関数がtrueの時のみうまく遷移するようになりました。

これは偶然そう動作しているのでしょうか、それとも上記は正しい記述方法なのでしょうか?
正しい記述方法ならいいのですが、上記以外に正式な記述方法があれば
教えていただけないでしょうか?

※TYPE="submit"にすればいいとは思うのですが、buttonで実現したいと
考えております。

JavaScriptで、
function func() {
 if (a==0) {
  alert("処理しない");
  return false;
 }
 return true;
}
と、a=0ならfalseを返し、それ以外ならtrueを返す関数を定義しています。

そして、FORMタグで
<FORM NAME="FormName" ACTION="next.html">
<INPUT TYPE="button" VALUE="next" NAME="button1" onClick="return func();submit();">
</FORM>
と記述しています。
要は、ボタンを押下した際にfunc関数がtrueを返せば、next.htmlに
遷移させたいのですが、上記記述では、遷移しませ...続きを読む

Aベストアンサー

3つのパターンをみる限り、理由は以下の通りと思います。
1.セミコロン(;)で区切った場合、
この場合、「return func();」と「submit();」とは別の文です。returnはその時点の値を戻して、それ以降の動作を打ち切ってしまいます。よって、onClickイベントはfuncメソッドの戻り値(true/false関係なく)を戻して、そこで終了、それ以降のsubmitは実行しないとなります。

2.カンマ(,)で区切った場合、
この場合、「return func(),submit();」が1つの文となります。この「,」は、左右の式を評価して、右式を結果とする演算子です。よって、funcメソッド、submitメソッド両方を評価するため、funcメソッドの戻り値に関係なく、submitされます。

3.&&で区切った場合、
論理演算子「&&」は、左右ともにtrue(0以外)の場合のみtrueとする演算子です。また、2項論理演算子は左式から評価し、左式だけで全体の結果がわかる場合、右式を評価しません。よって、funcメソッドがfalseを戻した場合、その時点でsubmitを評価しなくても演算結果は必ずfalseとなるのでそこで打ち切られ、trueを戻した場合、submitを評価しないと演算結果を得られないため、遷移したわけです。「&&」を「||(論理和)」に変更すると逆の結果得たと思います。

さて、では3の「&&」が正しいかと言われたら、文法上は正しいです。ただし、他人がみてわかるとは思えません。
そこで、以下の記述はいかがでしょう。読んでみてソースを理解できますか。


<FORM NAME="FormName" ACTION="next.html">
<INPUT TYPE="button" VALUE="next" NAME="button1" onClick="func()">
</FORM>

(中略)

// funcの定義
function func() {
 if (a==0) {
  alert("処理しない");
  return ;
 }
 document.FormName.submit();
}

要は、ボタンを押されたら、funcを呼び出せ。
funcでは、aが0ならば、そこで終了しろ。
そうでなければ、documentオブジェクト内のFormNameと言う名前のオブジェクトのsubmitメソッドを呼べ。
です。

3つのパターンをみる限り、理由は以下の通りと思います。
1.セミコロン(;)で区切った場合、
この場合、「return func();」と「submit();」とは別の文です。returnはその時点の値を戻して、それ以降の動作を打ち切ってしまいます。よって、onClickイベントはfuncメソッドの戻り値(true/false関係なく)を戻して、そこで終了、それ以降のsubmitは実行しないとなります。

2.カンマ(,)で区切った場合、
この場合、「return func(),submit();」が1つの文となります。この「,」は、左右の式を評価して、右...続きを読む

Q確認ダイアログで「キャンセル」にフォーカスしておくことは可能ですか?

confirmで確認ダイアログを出した時に
キャンセルボタンにフォーカス(セレクト?)を
あてておくことは可能でしょうか?

Aベストアンサー

JavaScriptでは不可能です。

VBscriptでは出来ます。
こんな感じでJavaScriptからVBScriptの関数をコールできます。

<script language="VBScript">
Function VbConfirm()
VbConfirm= MsgBox ("If Yes THEN rc=6,If No THEN rc=7",4,"メッセージタイトル")
End Function
</script>
<SCRIPT LANGUAGE="JavaScript">
rc = VbConfirm();
alert(rc);
</script>

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

Qhiddenのvalueの値を変えたい

おはようございます。
教えていただきたいことがあります。
HTMLのほうに
<input type="hidden" name="btn" value="">
と書きます。
それでJavaSctiptのfunctionの中で
document.forms[0].btn.value=funcitonの引数;
とやっているのですが、hiddenのvalueの中に値が入っていないようです。
どうしてでしょうか?
こういう使い方ってできないものなのでしょうか?

宜しくお願いします。

Aベストアンサー

functionから値を設定できるはずですよ。

「forms[0]」ありますが、複数フォームを定義したりはしていないでしょうか?
直接、フォーム名を記述した方が、安全かもしれません。

下記のように作成すれば、動作しました。


<html>

<head>
<script type="text/javascript">
<!--
function setVal(val) {
document.forms.test_form1.btn.value=val
document.forms.test_form1.txt.value=val
}
// -->
</script>
</head>

<body onload="javascript:setVal('abc')">
<form name="test_form1">
<input type="hidden" name="btn" value="">
<input type="text" name="txt" value="">
</form>
</body>

</html>

functionから値を設定できるはずですよ。

「forms[0]」ありますが、複数フォームを定義したりはしていないでしょうか?
直接、フォーム名を記述した方が、安全かもしれません。

下記のように作成すれば、動作しました。


<html>

<head>
<script type="text/javascript">
<!--
function setVal(val) {
document.forms.test_form1.btn.value=val
document.forms.test_form1.txt.value=val
}
// -->
</script>
</head>

<body onload="javascript:setVal('abc')">
<form name="test_form...続きを読む

Qボタンを動的にdisabledさせたいのですが

お世話になります。

ある画面に複数ボタンがあって
押されたボタンをdisabledにしたいなと思っています。
ただしどのボタンがおされても同じ関数に飛んでほしいのですが
いまいち解決できません。

<form name="form">
<input type="button" name="syori1" value="ボタン1" onClick="javascript:hogehoge()">
<input type="button" name="syori2" value="ボタン2" onClick="javascript:hogehoge()">
<input type="button" name="syori3" value="ボタン3" onClick="javascript:hogehoge()">
</form
>
とあった場合

function hogehoge(){
document.form.ボタンの名前.disabled=true;
}

としたいのですが
名前の部分は動的に変えることは可能なのでしょうか?
普通に
document.form.syori1.disabled=true;
と書けば簡単なのですが、ボタンの数が決まっていないためボタン名を指定して書くことはできません。

ボタン名は
onClick="javascript:hogehoge(document.form.ボタンの名前.name)"
で、送ることができるのは確認したのですが
hogehoge(ボタンの名前)
の方でどうやってdisabledのところに入れればいいか解りません。
よろしくお願い致します。

お世話になります。

ある画面に複数ボタンがあって
押されたボタンをdisabledにしたいなと思っています。
ただしどのボタンがおされても同じ関数に飛んでほしいのですが
いまいち解決できません。

<form name="form">
<input type="button" name="syori1" value="ボタン1" onClick="javascript:hogehoge()">
<input type="button" name="syori2" value="ボタン2" onClick="javascript:hogehoge()">
<input type="button" name="syori3" value="ボタン3" onClick="javascript:hogehoge()">
</form
>
...続きを読む

Aベストアンサー

そういう場合は名前じゃなくて、thisというオブジェクトを渡します。

<script language=javascript>
function hogehoge(btn){
btn.disabled=true;
}
</script>
<form name="form">
<input type="button" name="syori1" value="ボタン1" onClick="javascript:hogehoge(this)">
<input type="button" name="syori2" value="ボタン2" onClick="javascript:hogehoge(this)">
<input type="button" name="syori3" value="ボタン3" onClick="javascript:hogehoge(this)">
</form>

QDataSet(DataTable)の使い方

GridViewやListViewなどに動的にデータを追加していきたいので、
DataTableを使おうと思いました。

下記、(1)のようにPageLoadイベントで1行追加することはできたのですが、
ボタンを押すごとに、1行ずつ追加していきたいので(2)のように修正したのですが、
ボタンを押したときのポストバックで、DataSetもDataTableもnullになってしまい、
行の追加ができません。
ボタンを押すごとにどんどん行を追加していきたいのですが、このような場合は
どのようにDataSetもDataTableを保持しておけば良いのでしょうか。

(1)
public partial class WebForm1 : System.Web.UI.Page
{

int count = 0;

protected void Page_Load(object sender, EventArgs e)
{

if (!IsPostBack)
{

DataSet dS = new DataSet("dS");
DataTable dT = new DataTable("dT");

// データテーブル カラム作成
dT.Columns.Add("no", typeof(int));
dT.Columns.Add("name", typeof(string));
dT.Columns.Add("kind", typeof(string));
dT.Columns.Add("time", typeof(int));
dS.Tables.Add(dT);

DataRow dR = dT.NewRow();
dR["no"] = count;
dR["name"] = count.ToString();
dR["kind"] = count.ToString();
dR["time"] = count;
dT.Rows.Add(dR);

// リストビュー データソース選択
ListView2.DataSource = dS;
ListView2.DataBind();

}

}
}


(2)
public partial class WebForm2 : System.Web.UI.Page
{
int count = 0;
DataSet dS;
DataTable dT;

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{

dS = new DataSet("dS");
dT = new DataTable("dT");

// データテーブル カラム作成
dT.Columns.Add("no", typeof(int));
dT.Columns.Add("name", typeof(string));
dT.Columns.Add("kind", typeof(string));
dT.Columns.Add("time", typeof(int));
dS.Tables.Add(dT);

}
}

protected void Button1_Click(object sender, EventArgs e)
{
count = count + 1;

DataRow dR = dT.NewRow();
dR["no"] = count;
dR["name"] = count.ToString();
dR["kind"] = count.ToString();
dR["time"] = count;
dT.Rows.Add(dR);

// リストビュー データソース選択
ListView2.DataSource = dS;
ListView2.DataBind();

}
}

GridViewやListViewなどに動的にデータを追加していきたいので、
DataTableを使おうと思いました。

下記、(1)のようにPageLoadイベントで1行追加することはできたのですが、
ボタンを押すごとに、1行ずつ追加していきたいので(2)のように修正したのですが、
ボタンを押したときのポストバックで、DataSetもDataTableもnullになってしまい、
行の追加ができません。
ボタンを押すごとにどんどん行を追加していきたいのですが、このような場合は
どのようにDataSetもDataTableを保持しておけば良いのでしょうか。...続きを読む

Aベストアンサー

#1です。

自分は DataTable を使う場合、TableAdapter を使った「強い型つき」DataTable しか使わないので、そもそも、単なる DataTable の入れ物にすぎない DataSet を使う習慣がないのですが、

var sampleDataTable = new SampleTableAdapter.Get_All();
ListView2.DataSource = sampleDataTable;

普通は、DataTable をバインドするのと違いますか?
DataSet をバインドすると、たしかデフォルトで DataSet 中に定義された先頭の DataTable がバインドされるので、ご提示のケースですと、 dS にdT が収められていないだけのような気がするのですが。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング