2010-03-31 4 views
2

확인란과 버튼이있는 aspx 페이지가 있습니다. 사용자가 확인란을 선택하기 전까지는 기본적으로이 버튼이 비활성화됩니다. 버튼에 enabled = "false"속성을 추가하면 유효성 검사가 제거되는 것처럼 보입니다. 버튼이 활성화되어 있으면 유효성 검사가 계속 수행되기를 원합니다. 다음은 각기 다른 부분에 대한 코드와 마크 업입니다.비활성화 asp.net 버튼은 버튼에 대한 유효성을 비활성화합니다.

확인란 :

<asp:CheckBox runat="server" ID="termsCheckBox" /> 
<label style="display: inline;"> 
I agree to the Terms & Conditions</label> 

버튼 :

<asp:Button runat="server" ID="registerButton" OnClick="registerButton_Click1" 
Text="Register" Enabled="false" ValidationGroup="accountValidation" /> 

JQuery와 :

<script type="text/javascript" language="javascript"> 
$(document).ready(function() { 
    $('#<%=termsCheckBox.ClientID %>').click(function() { 
     var checked = $(this).val(); 

     if (checked != undefined) 
      $('#<%=registerButton.ClientID %>').removeAttr('disabled'); 
     else 
      $('#<%=registerButton.ClientID %>').attr('disabled', 'disabled'); 
    }); 
}); 
</script> 

답변

0

난 당신이 활성화 된 경우 관련 클라이언트 측 유효성 검사 코드가 버튼

+0

클라이언트 쪽에서 잘 작동합니다. 버튼을 사용하려면 서버로 이동할 필요가 없습니다. – Xaisoft

+0

. asp.net 단추가 .Net 프레임 워크에서 수행하는 ValidationGroup 유효성 검사의 일부가되도록하려면 스크립트가 클라이언트의 처리기에 단추를 연결해야한다는 것을 확인하기 위해 서버에 다시 게시해야합니다. . 클라이언트에 사용자 지정 스크립트가있는 경우 해고 할 클라이언트 클릭 이벤트에 연결되어 있는지 확인해야합니다. 내가 놓친 경우가 아니면 – Sunny

+0

괜찮습니다. 내가 클라이언트 측에 전달하고 포스트 백을하지 않기 때문에 버튼이 활성화되어있을 때 스크립트가 추가되지 않기 때문에 버튼에 대한 유효성 검사가 처리되지 않는다고 말하고 있습니까? – Xaisoft

2

그것은 검증이 확인란이 아닌 버튼에 연결해야 할 것 같다.

+0

체크 박스에 유효성 검사를 시도했는데 오류 메시지가 나타났습니다. ControlToValidate가 확인란에 유효하지 않습니다. – Xaisoft

+0

어떤 유형의 유효성 검사기를 사용 했습니까? 게시 한 코드에 표시되지 않습니다. – Ray

+0

모든 종류를 사용하고 있습니다. Compare, Requried, RegularExpression – Xaisoft

2

의 ASP ValidationGroup에 출마하기 위해 생성되기 때문에 오히려 클라이언트 측보다 장애인/체크 박스 서버 측 이벤트의 버튼을 작동 것이라고 생각 .net은 어리 석다. 왜냐하면 컨트롤이 비활성화되어있을 때, 그 일이 일어나지 않을 모든 종류의 것들이 있기 때문이다.

이 경우 클라이언트 쪽 유효성 검사를 발생시키는 js 코드는 비활성화 된 버튼에 대해 만들어지지 않습니다.

수동 뒤에 코드에서 클라이언트 측 JS 코드를 추가하려고하면

,

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    registerButton.OnClientClick = String.Format("javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('{0}', '', true, '', '', false, false))", registerButton.UniqueID) 
End Sub 

asp.net가 비활성화 된 컨트롤에 대한 모든 속성을 렌더링하지 않기 때문에 그것은 작동하지 않습니다.

두 가지 해결책이 있습니다. 클라이언트 쪽 JS에서 컨트롤을 사용하지 않도록 설정하거나 자바 스크립트를 추가하여 클라이언트 쪽에서 유효성 검사를 통해 다시 게시를 수행하십시오. btnSubmit 이미 내 클라이언트 측 코드에 정의 된 자바 스크립트 변수가 있음을

If btnSubmit.Enabled = False Then 
     'Asp.net will not render all the attributes for a control that is disabled. Even if you 
     'try to set the OnClientClick attribute manually in code behind for the control, it will 
     'not work. Asp.net will not render the attribute. This is a workaround for this problem. 
     btnSubmit.Enabled = True 

     strJavaScript &= "btnSubmit.disabled = true;" 

    End If 

    ClientScript.RegisterStartupScript(Page.GetType(), "myStartupScript", strJavaScript, True) 

참고 : 내 프로그램을 위해 무슨 짓을

는 클라이언트 측에있는 버튼을 사용하지 JS 코드를 생성하는 코드를 추가하는 것이 었습니다 .

관련 문제