2008-09-05 4 views
9

세부 사항 : 사용자가 제출 버튼을 클릭 한 후제출 단추를 (클라이언트 쪽) 사용하지 않도록 설정하는 가장 좋은 방법은 무엇입니까?

  • 만 해제하지만, 다시 서버
  • ASP.NET 웹 양식 (.NET 1.1)에 게시하기 전에
  • 가 jQuery를 (선호있는 도서관에서 모든 경우 양식을 다시로드 (즉, 신용 카드가 실패한 경우)

이 내가이 작업을 수행 할 필요성이 아니라)을 활성화해야합니다 너무 많이 변경하지 않고 그것을 할 수있는 간단한 방법이 있다면 , 나는 그것을 할 거 야. JQuery와 통해, 버튼을 제출되는 모든

$('#SubmitButtonID').click(function() { this.disabled = true; }); 

답변

1

(간단한 해결책이없는 경우, 아마 그것을하지 않습니다 즉, 그래서 너무 깊이 파고에 대해 걱정하지 마십시오)

$('input[type=submit]').click(function() { this.disabled = true; }); 

아니면 양식 제출에 그렇게하는 것이 더 유용 할 수 있습니다 : 그것은 것

$('form').submit(function() { 
    $('input[type=submit]', this).attr("disabled","disabled"); 
}); 

그러나 나는 우리가 할 수 생각 문맥에 대해 조금 더 알고 있다면 질문에 대한 더 나은 대답을주십시오.

아약스 요청 인 경우 성공 또는 실패시 제출 버튼을 다시 사용하도록 설정해야합니다.

(자바 스크립트로 버튼을 비활성화하는 것 외에) 표준 HTTP 양식 제출 인 경우 동일한 양식의 여러 제출물을 안전하게 보호하기 위해이 작업을 수행하는 경우 코드에 일종의 제어 권한이 있어야합니다 자바 스크립트로 버튼을 비활성화하면 여러 제출을 막지 못할 수도 있기 때문에 제출 된 데이터를 처리해야합니다.

0

3 가지 방법으로 제출해야하는 양식을 제출할 수 있습니다. David McLaughlin과 Jimmy의 제안을 모두 사용하십시오. 하나는 제출 단추 양식 요소를 사용 불가능하게하고 다른 하나는 기본 HTML 양식 제출을 사용 불가능하게합니다.

세 번째로, 이것들은 Javascript가 form.submit()을 수행하는 것을 불가능하게하지 않습니다. OnSubmit="return false" 메소드는 사용자가 제출 단추를 클릭하거나 입력 양식 요소에서 Enter를 누를 때만 적용됩니다. 클라이언트 측 스크립팅도 처리해야합니다.

4

제출이 처리되는 동안 제출 버튼을 두 번 이상 누르는 것을 원하지 않는다고 생각합니다.

내 접근 방식은 버튼을 완전히 숨기고 상태 표시기 (애니메이션 GIF 등)를 대신 표시하는 것입니다.

여기 (기술적으로 프로토 타입에있어하지만 난 JQuery와 버전이 매우 유사하다고 생각) 매우 인위적인 예입니다 :

<html> 
    <head> 
     <script type="text/javascript" src="include/js/prototype.js"></script> 

     <script type="text/javascript"> 
      function handleSubmit() 
      { 
       $('submit').hide(); 
       $('progressWheel').show(); 
       return true; 
      } 
     </script> 
    </head> 
    <body> 
     <img src="include/images/progress-wheel_lg.gif" id="progressWheel" style="display:none;"/> 
     <input type="submit" name="submit" id="submit" value="Submit" onclick="handleSubmit();"/> 
    </body> 
</html> 
+0

+1은 요청서에 게시 된 제출 버튼 값이 필요한만큼 유용했습니다. 버튼을 비활성화하면 값이 게시되지 않습니다. – ajbeaven

0

어떻게 뒤에 약

코드 :

btnContinue3. 속성.항목 ("onclick을") = "disableSubmit()"

자바 스크립트 :

function disableSubmit() { 
    document.getElementById('btnContinue3').onclick = function() { 
     alert('Please only click once on the submit button!'); return false; 
    }; 
} 

이 나던 무슨의 문제를 해결하면 다시 게시 시간 초과,하지만 나를 위해 일한 이외.

1

주의 사항 : 양식을 제출하기 전에 버튼을 비활성화하면 안됩니다. OnClick 이벤트에서 javascript를 사용하여 버튼을 비활성화하면 양식 제출이 유실 될 수 있습니다.

그래서 이미지를 위에 놓거나 버튼을 표시된 범위 밖으로 이동하여 자바 스크립트를 사용하여 버튼을 숨길 것을 제안합니다. 그러면 양식 제출이 정상적으로 진행될 수 있습니다.

8

이 같은 것을 할 수있는이의

$('form').submit(function() { 
    $(this) 
     .find(":submit,:image")    // get all the submit buttons 
     .attr({ disabled : 'disabled' }) // disable them 
     .end()        // go back to this form 
     .submit(function() {    // change the onsubmit to always reject. 
      return false; 
     }) 
    ; 
}); 

장점 :

  • 그것은 제출의 모든 방법과, 모든 형태의 작동합니다
    • 제출 딸깍를 요소
    • 또는
    • 그것은 모든 요소를 ​​제출 비활성화됩니다 다른 코드에서
  • form.submit() 전화 :
    • <input type="submit"/>
    • <button type="submit"></button>
    • <input type="image" />
  • 정말 짧다.
관련 문제