■61174 / inTopicNo.3) |
Re[2]: onsubmit時にボタンを無効化する |
□投稿者/ とら (2回)-(2011/08/04(Thu) 14:33:21)
|
■No61162 (やじゅ さん) に返信
> 2011/08/04(Thu) 13:33:32 編集(投稿者)
>
> ■No61161 (とら さん) に返信
>>OnSubmit時にボタンを無効化するようにしたいのですが、有効化されたままになります。
>
> それって単純に画面が更新されたからじゃないですかね。
> 画面更新後にSubmitボタンを無効化するようにする必要があるのでは?
> http://d.hatena.ne.jp/YokoKen/20081028/1225168779
やじゅさん、ありがとうございます。
上記のサイトを参考に実現することができました。
WebForm1.aspx
---------------------------------------------------------------------------
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication4.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Sample: OnSubmit Behavior</title>
<script type="text/javascript">
window.onload =
function () {
function protect() {
var btn = document.getElementById("Button1");
btn.value = "in progress";
btn.disabled = true;
var lbl = document.getElementById("Label1");
lbl.innerText = "you clicked button1";
for (var i = 0; i < document.forms.length; i++)
{
document.forms[i].onsubmit = function() { return false; };
}
}
for (var i = 0; i < document.forms.length; i++)
{
document.forms[i].onsubmit = function() { setTimeout(protect, 0); };
}
};
</script>
</head>
<body>
<form id="form1" runat="server" >
<div>
<asp:Button ID="Button1" runat="server" Text="Click ME!"
onclick="Button1_Click"
/>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
---------------------------------------------------------------------------
WebForm1.aspx.cs
---------------------------------------------------------------------------
using System;
namespace WebApplication4
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Button1.Enabled = true;
Button1.Text = "Load at First Time";
}
else
{
Button1.Enabled = true;
Button1.Text = "Load by Postback";
}
}
protected void Button1_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(5000);
}
}
}
---------------------------------------------------------------------------
|
解決済み
|