回答編集履歴

1

追記

2023/06/11 06:32

投稿

退会済みユーザー
test CHANGED
@@ -41,3 +41,136 @@
41
41
 
42
42
  お勧めはもちろん (1) です。
43
43
 
44
+ ---
45
+
46
+ **【追記】**
47
+
48
+ 上の案 (1), (2) のサンプルを書いておきます。
49
+
50
+ **.aspx.cs**
51
+
52
+ ```C#
53
+ using System;
54
+ using System.Diagnostics;
55
+
56
+ namespace WebForms1
57
+ {
58
+ public partial class WebForm25 : System.Web.UI.Page
59
+ {
60
+ protected void Page_Load(object sender, EventArgs e)
61
+ {
62
+ btnRegister.Enabled = !string.IsNullOrEmpty(tbInputData.Text);
63
+ }
64
+
65
+ protected void btnRegister_Click(object sender, EventArgs e)
66
+ {
67
+ Debug.WriteLine("★ 登録ボタンが押された!");
68
+
69
+ if (string.IsNullOrEmpty(tbInputData.Text))
70
+ {
71
+ return;
72
+ }
73
+ else
74
+ {
75
+ lblMsg.Text = "★★ 入力済!";
76
+ return;
77
+ }
78
+ }
79
+
80
+ protected void Button1_Click(object sender, EventArgs e)
81
+ {
82
+ if (Page.IsValid)
83
+ {
84
+ Label1.Text = $"入力 {TextBox1.Text} を受け付けました";
85
+ }
86
+ }
87
+ }
88
+ }
89
+ ```
90
+
91
+ **.aspx**
92
+
93
+ ```html
94
+ <%@ Page Language="C#" AutoEventWireup="true"
95
+ CodeBehind="WebForm25.aspx.cs" Inherits="WebForms1.WebForm25" %>
96
+
97
+ <!DOCTYPE html>
98
+
99
+ <html xmlns="http://www.w3.org/1999/xhtml">
100
+ <head runat="server">
101
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
102
+ <title></title>
103
+ </head>
104
+ <body>
105
+ <form id="form1" runat="server">
106
+ <h3>案 (2)</h3>
107
+ <p>Button の OnClientClick プロパティは使わないで、
108
+ JavaScript で onclick 属性にスクリプトを設定</p>
109
+
110
+ <div id="div1" runat="server">
111
+ <asp:TextBox ID="tbInputData" runat="server" onchange="toggleButton();" />
112
+ <br />
113
+ <asp:Button ID="btnRegister" runat="server" Text="登録"
114
+ OnClick="btnRegister_Click" />
115
+ </div>
116
+
117
+ <div id="div2" runat="server">
118
+ <asp:Label ID="lblMsg" runat="server" Text="" />
119
+ </div>
120
+
121
+ <hr />
122
+ <h3>案 (1)</h3>
123
+ <p>ASP.NET Web Forms に備わっているユーザー入力の検証機能を利用</p>
124
+
125
+ <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
126
+ <asp:RequiredFieldValidator ID="RequiredFieldValidator1"
127
+ runat="server"
128
+ ErrorMessage="入力は必須です"
129
+ ForeColor="Red"
130
+ Display="Dynamic"
131
+ ControlToValidate="TextBox1">
132
+ </asp:RequiredFieldValidator>
133
+ <br />
134
+ <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
135
+ <br />
136
+ <asp:Label ID="Label1" runat="server" ></asp:Label>
137
+
138
+ </form>
139
+
140
+ <script>
141
+ function toggleButton() {
142
+ var tbInputData = document.getElementById('tbInputData');
143
+ var btnRegister = document.getElementById('btnRegister');
144
+
145
+ if (tbInputData.value !== '') {
146
+ btnRegister.disabled = false;
147
+ }
148
+ else {
149
+ btnRegister.disabled = true;
150
+ }
151
+ }
152
+
153
+ function showDialog() {
154
+ var result = confirm("処理を続行しますか?");
155
+ if (result) {
156
+ // 「はい」が押された場合はポストバックを許可する
157
+ return true;
158
+ } else {
159
+ // 「いいえ」が押された場合はポストバックをキャンセルする
160
+ return false;
161
+ }
162
+ }
163
+
164
+ // Button の OnClientClick プロパティは使わないで、
165
+ // JavaScript で onclick 属性にスクリプトを設定
166
+ window.addEventListener('DOMContentLoaded', () => {
167
+ var btnRegister = document.getElementById('btnRegister');
168
+ btnRegister.addEventListener('click', (event) => {
169
+ let result = showDialog();
170
+ if (result == false) { event.preventDefault(); }
171
+ });
172
+ });
173
+ </script>
174
+ </body>
175
+ </html>
176
+ ```