|
■No1868 (pri さん) に返信
>>ボタンイベントがあるとき=マウスでボタンを押したとき
>>ボタンイベントがないとき=テキストボックスでEnterキーを押したとき
>
> これは、ボタンイベント自体(private button1 〜 end sub)をソースから削除し、
> ボタンを押した際にvbscriptだけ起動する状態です。
>
> その状態の場合は、pageが再度読み込まれないので、値を保持している状態なのだと思います。
>
> ボタンイベントがあるときは、ボタンイベント時にpageが読み込まれてしまうので保持できないのだと思うのですが、
> その対処法が思いつかず…
うーん、おかしいなぁ…(−_−;
そういう意味だとすると、こちらのローカルではボタンイベントがあるときでも値が取れてます。
ちょっと長くなるので3つに分割して投稿しますね。
【1/3】
まずは最初に試したミニマムコード。
<WebForm1.aspx>
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebTest.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language="vbscript">
<!--
Sub Button1_OnClick
If MsgBox("おや ? 不思議 ! !", vbYesNo + vbDefaultButton2, "確認") = vbNo Then
Form1.TextBox1.value = "No"
Else
Form1.TextBox1.value = "Yes"
End If
End Sub
-->
</script>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox><br>
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button><br>
<asp:Label id="Label1" runat="server">Label</asp:Label>
<input type="text" name="dummy" style="display:none">
</form>
</body>
</HTML>
<WebForm1.aspx.vb(自動生成部除く)>
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox1.Text = "No" Then
Label1.Text = "…"
Else
Label1.Text = "成功"
End If
End Sub
このコードで、少なくともマウスでボタンを押したときは期待通りの動作になりました。
ただし、テキストボックスでEnterキーを押すと、ダイアログが出ずにFormが送信されちゃいました。
これには2つの対策方法があります。
|