jayrod
asked on
disable button in .net 2.0 web page
I have a .net 2.0 form that disables the submit button after clicked. THis works just fine:
btnSubmit.Attributes.Add(" onClick", "javascript:document.getEl ementById( '" + btnSubmit.ClientID + "').value='Please wait...'; javascript:document.getEle mentById(' " + btnSubmit.ClientID + "').disabled = true;")
However, I have validation controls being used also. If the page is not valid, the button is still disbaled. How do I keep the button enabled if the page is not valid? I have tried the following:
If Page.IsValid Then
'//processing here
Else
btnSubmit.Text = "Continue Mortgage Application"
btnSubmit.Enabled = True
End If
which does not seem to be working
btnSubmit.Attributes.Add("
However, I have validation controls being used also. If the page is not valid, the button is still disbaled. How do I keep the button enabled if the page is not valid? I have tried the following:
If Page.IsValid Then
'//processing here
Else
btnSubmit.Text = "Continue Mortgage Application"
btnSubmit.Enabled = True
End If
which does not seem to be working
ASKER
No - that is incorrect. I am using VS.Net 2005, Visual Basic and there is no disabled property - only enabled.
Anyway - that does not matter as the code is not even getting to that point because of the validation controls. Thanks!
Anyway - that does not matter as the code is not even getting to that point because of the validation controls. Thanks!
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Hi Todd!
thanks so much! That works great! However, the validation seems to be firing twice now? I have tried putting the JS code above in the HEAD and the BODY and it still seems to fire twice, showing the popup validation alert twice. Is there any explanationn for this - hopefully it will be an easy fix :) Thanks again so much!
thanks so much! That works great! However, the validation seems to be firing twice now? I have tried putting the JS code above in the HEAD and the BODY and it still seems to fire twice, showing the popup validation alert twice. Is there any explanationn for this - hopefully it will be an easy fix :) Thanks again so much!
Well...technically it will fire twice now. Once when you call the validation routine (Page_ClientValidate()) and once when the "normal" page life cycle calls the validation routine.
The reason we call the Page_ClientValidate is to ensure that the Page_IsValid property is properly updated with the current valid state of the page. I think your options are to either move away from using alerts to display validation warnings (using page labels instead) or to try to "disable" the normal Page_ClientValidate call.
If you want to go the route of disabling the normal Page_ClientValidate call, you may be able to "unwire" the function after you call it in your button click so that when it's called by the validators it does nothing. For example:
function disableButton(e){
// Do nothing if client validation is not active
if (typeof(Page_Validators) == "undefined") return;
if (typeof(Page_ClientValidat e) == 'function') {
if (Page_ClientValidate() == false) {
//Set the Page_ClientValidate function to a "dummy" function so it doesn't fire again
Page_ClientValidate = function(){return false;};
return false;
}else{
//check client-side IsValid variable set by Page_ClientValidate
if(Page_IsValid){
//Do you button disabling here
e.disabled = true;
e.value = 'Please wait...';
}
}
}
}
Give that a try or check out the links I supplied for some additional ideas.
Thanks~
Todd
The reason we call the Page_ClientValidate is to ensure that the Page_IsValid property is properly updated with the current valid state of the page. I think your options are to either move away from using alerts to display validation warnings (using page labels instead) or to try to "disable" the normal Page_ClientValidate call.
If you want to go the route of disabling the normal Page_ClientValidate call, you may be able to "unwire" the function after you call it in your button click so that when it's called by the validators it does nothing. For example:
function disableButton(e){
// Do nothing if client validation is not active
if (typeof(Page_Validators) == "undefined") return;
if (typeof(Page_ClientValidat
if (Page_ClientValidate() == false) {
//Set the Page_ClientValidate function to a "dummy" function so it doesn't fire again
Page_ClientValidate = function(){return false;};
return false;
}else{
//check client-side IsValid variable set by Page_ClientValidate
if(Page_IsValid){
//Do you button disabling here
e.disabled = true;
e.value = 'Please wait...';
}
}
}
}
Give that a try or check out the links I supplied for some additional ideas.
Thanks~
Todd
btnSubmit.disabled = False;