2014-02-13 7 views
0

PRE 편집 : 버튼의 장애가 아니라 저장 후 다른 작업을하는 것으로 나타났습니다. 페이지를 디버깅하고 저장된 양식을 변경 한 후 페이지가 (document).ready 부분의 자바 스크립트 기능을 잃어버린 것을 알았습니다. 해결책으로 해결책을 추가했습니다.JavaScript 비활성화 된 버튼의 속성 설정


두 개의 버튼이 저장되고 승인되는 입력 페이지가 있습니다. 메커니즘은 다음과 같습니다. 양식을 채우고 저장 한 다음 승인 할 수 있습니다. 페이지를 새로 고침하거나 저장된 페이지 목록에서 저장된 페이지에 접근 할 수도 있습니다.

양식을 저장하지 않으면 승인 버튼이 비활성화됩니다. 저장 후 코드에서 활성화 할 수 있습니다. 승인 버튼에는 자바 스크립트에서 확인 텍스트를 사용하는 확인 버튼 익스텐더가 있습니다. 나는 (document).ready에로드하고 코드는 다음과 같습니다 GetConfirmTextForApproval() 어떤 계산을하고 확인 텍스트를 반환

$(document).ready(function() { 
     $("#ASPxSplitter1_ContentPlaceHolder1_uctActivityEntry1_tbActivity_tbHistory_btnApproveActivity_btnApprove").click(function() { 

      $("#ASPxSplitter1_ContentPlaceHolder1_uctActivityEntry1_tbActivity_tbHistory_btnApproveActivity_lblMessage").text(GetConfirmTextForApprove()); 
     }); 
    }); 

.

이제 폼을 열 때 버튼이 비활성화되어 있기 때문에 위의 코드는 첫 번째 페이지로드시 렌더링되지 않습니다. 이것은 폼을 채우고 저장하기 시작한 후 승인 할 때 함수를 실행하지 않기 때문에 확인 텍스트를 얻지 못하는 문제를 일으 킵니다. 그러나 페이지를 새로 고친 후 또는 다른 페이지에서 저장된 양식의 페이지로 이동 한 후에 적절한 확인 텍스트가 표시됩니다.

그럼 어떻게이 문제를 해결할 수 있습니까? 첫 페이지로드시 버튼이 비활성화되어 있어도 적절한 확인 텍스트를 얻으려면 어떻게해야합니까?

참고 : 저장 후 페이지의 URL이 변경됩니다. 쿼리 문자열이 추가됩니다. 그로 인해 문제가 발생할 수도 있습니다.

+1

... ** 와우 ** 그 ID 이름은 엄청납니다. 클래스 사용에 대해 생각해 본 적이 있습니까? – Doorknob

+0

위의 코드는 첫 번째 페이지로드시 렌더링되지 않습니다. 따라서 렌더링되는 코드를 만드십시오. – lavrik

+0

@Doorknob 많은 사용자 컨트롤을 사용하기 때문입니다. 단추와 페이지는 사용자 정의 컨트롤입니다. –

답변

0

당신은 때 문서 준비, 당신은 당신이 원하는 때 버튼을 활성화해야합니다

// Disable #x 
$("#x").prop("disabled", true); 

// Enable #x 
$("#x").prop("disabled", false); 

하지만 사용할 수 있습니다.

이 질문의 사전 편집에서 말한 것처럼

이 문제 때문에 저장 후 변경의 원인이되었다 : 그럼 당신은 이벤트 리스너 내 자신의 문제를 해결

$("#button").click(function(){ 
    //Your code 

    if(GetConfirmTextForApproval()){ 
    //You active the button and the text that you want show. 
    } 
}); 
+0

클릭 이벤트를 사용할 수 없습니다. 팝업 창이 나타나면 클릭 이벤트가 발생합니다. 즉, 클릭 이벤트 리스너를 사용하면 먼저 팝업이 표시되고 팝업에서 "예"를 클릭하면 팝업의 텍스트가 변경되어 의미가 없습니다. –

0

을 만들 필요가있다. 내 기능을 다음과 같이 변경했습니다.

$(document).ready(function() { 
    SetConfirmMessageForApproval(); 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
}); 

function EndRequestHandler(sender, args) { 
    SetConfirmMessageForApproval(); 
    } 

function SetConfirmMessageForApproval() { 
     $("#ASPxSplitter1_ContentPlaceHolder1_uctActivityEntry1_tbActivity_tbHistory_btnApproveActivity_btnApprove").click(function() { 
      $("#ASPxSplitter1_ContentPlaceHolder1_uctActivityEntry1_tbActivity_tbHistory_btnApproveActivity_lblMessage").text(GetConfirmTextForApprove()); 
     }); 
    } 

다른 사람이 필요로하는 경우 도움이됩니다.