2013-06-16 3 views
1

현재 특정 게시물에 대해 '투표'양식을 제출해야하는 프로젝트를 진행 중입니다. 제출 버튼을 클릭하는 순간 버튼을 두 번 이상 클릭하면 제대로 작동하지만 POST 변수를 두 번 이상 제출하면 여러 번 항목에 대해 '투표'할 수 있습니다. 한 세트의 클릭.클릭 후 제출 버튼을 사용 중지합니다. 제출 후 jQuery/PHP

나는이 문제를 해결하기 위해 찾을 수있는 모든 jQuery 코드 예제를 살펴 봤지만 아무 것도 작동하지 않습니다. 이 버튼을 사용하지 않도록 설정하면 데이터를 수집하고 쿼리를 실행하는 리디렉션 페이지에서 아무 것도 제출되지 않아 오류가 반환됩니다. 즉, 버튼을 비활성화하는 것처럼 보이지만 동시에 정보가 제출되지 않도록합니다. 어떤 도움이 좋을 것

$('#vote').submit(function(){ 
    $(this).children($btn).attr('disabled', true); 
    return true; 
}); 

:

여기 내 jQuery 코드입니다. 감사합니다. .

답변

3

사용 JQuery와 .one

설명 :이 요소에 대한 이벤트 핸들러를 연결합니다. 핸들러는 요소 당 최대 한 번만 실행됩니다.

$(document).one("click","#vote",function(){ 
     $(this).children($btn).attr('disabled', true); 
     return true; 
    }); 
+0

처럼 보일 수 있습니다? – krishgopinath

+0

@passionateCoder 당신은 즉시 할 수 없습니다. 당신은 페이지를 새로 고침하고 다시 시도해야합니다. 둘 이상을 사용하려면 .one 대신 .on을 사용하십시오. – underscore

+0

이 코드를 완전히 사용하는 방법은 확실하지 않습니다. 기능적인 예제를 줄 수 있습니까? 당신의 도움을 주셔서 감사합니다. –

1

아마 당신의 최선의 선택은 단 하나의 제출을 ​​허용하고 버튼의 모양을 다른 방법을 조정하는 것입니다

var submitted = false; 
$('#vote').submit(function(){ 
    if(submitted) { 
    // cancel additional submits 
    return false; 
    } 

    submitted = true; 
    $(this).children($btn).val('Please wait...'); 
}); 
1

jQuery의 onoff 여기에 사용할 수 있습니다.

는 제출 후 예를 들어, 당신은 완전히

$('#vote').off('click'); 

하여 클릭을 해제 할 수 있습니다 당신은 click event을 추가 할 수 있습니다 다음

$('#vote').on('click'); 
1

에 의해 다시 원하는 경우를 전환 할 수 있습니다. 제출 버튼을 사용하는 대신 버튼 클릭 이벤트를 사용하십시오.

코드는 실제로 양식을 제출 다시 내가 원하는 경우 어떻게이

$($button).click(function(){ 
$(this).attr("disabled","disabled"); 
$($form).submit(); 
}); 
관련 문제