버튼의 Click 이벤트에서 버튼을 비활성화하고 해당 이벤트 핸들러를 호출 할 수 있습니까?버튼 클릭 : 버튼 처리기 비활성화 및 실행
나는 이것을 시도 :
protected void Button1_Click(object sender, EventArgs e)
{
Button1.Enabled = false;
}
이것은 IE, 모질라, 또는 크롬에서 작동하지 않습니다.
버튼의 Click 이벤트에서 버튼을 비활성화하고 해당 이벤트 핸들러를 호출 할 수 있습니까?버튼 클릭 : 버튼 처리기 비활성화 및 실행
나는 이것을 시도 :
protected void Button1_Click(object sender, EventArgs e)
{
Button1.Enabled = false;
}
이것은 IE, 모질라, 또는 크롬에서 작동하지 않습니다.
<asp:Button ... OnClientClick="disableButton(this);" />
<script type="text/javascript">
function disableButton(button)
{
//need to delay a few ms so that the button posts back before being disabled
var buttonToDisable = button;
setTimeout("reallyDisableButton()"), 2);
}
function reallyDisableButton()
{
buttonToDisable.disabled = true;
}
</script>
나는 당신의 문제 (페이지가로드하는 동안을 가지고 있기 때문에) 사람들이 여러 번 이벤트를 발로 따라서, 버튼을 여러 번 클릭되는 것으로 가정하고 당신은 단지 그들이 할 수 있도록하려면 한 번. 이렇게하면 실수로 여러 개의 동시 포스트 백이 보내지지 않도록 포스트 백 후에 버튼이 비활성화됩니다.
... 지연, 당신은 버튼을 먼저 비활성화 한 다음 원래 게시를 막기 위해'e.preventDefault();'가 뒤 따르는'__doPostBack ('Button1', '');을 호출 할 수 있습니다. –
@Scott 사용자가 지연을 볼 수있는 것과는 다릅니다. 그것은 그들에게 즉시 나타난다. – Servy
그 점을 이해합니다. 간단히 말해서 나는 사물이 언제 발사되는지에 대한 통제를 좋아한다. 포스트 백을 발생시키는 기본 메커니즘에 대해 함수가 완료 될 수 있도록 지연되도록 두는 것은 가장 제어 된 솔루션이 아닙니다. 내가 직접 말했기 때문에 포스트 백을 실행하고 기본 기능을 사용하지 않도록 제어하는 것이 나을 것입니다. 다시 말하지만, 그것은 단지 제어 환경 설정 일뿐입니다. –
이 추가 시도 할 수 :
protected void Button1_Click(object sender, EventArgs e)
{
// Do some stuff here
Button1.Attributes.Add("onclick", "javascript:return false;");
Button1.Enabled = false;
}
는 클라이언트 측에서 그것을 할하시기 바랍니다 ** 만 **. – gdoron
정확히 무엇을하고 싶은지에 대한 질문을 편집하십시오. 여기에 게시 한 코드는 코드가 반환 될 때 버튼을 비활성화하고 해당 메소드에서 실행중인 다른 코드도 비활성화합니다. –
자바 스크립트를 통해이 작업을 수행하십시오. 서버가 아니라 작업을 수행하는 클라이언트를 기반으로 훨씬 간단합니다 (1000/10000/100000 사용자가 동일한 작업을 수행 한 경우 어떻게됩니까?) –