2009-08-20 7 views
0

사용자가 양식 (제출 양식)을 클릭하면 페이지를 다시로드 할 때 div를 표시해야합니다.submit_form 버튼을 클릭 한 후 다시로드하면 숨겨진 div가 표시됩니다.

특히, 나는 show/hide div에 PHP 문의 양식이 있습니다. 연락처을 클릭하면 연락처 양식이 표시되고 숨겨집니다. show/hide js와 php contact 폼은 완벽하게 작동합니다. 을 클릭하면 페이지가 다시로드되고 "message sent"가 연락처 양식 div에 기록됩니다. 그러나 페이지가 다시로드 될 때 양식은 으로 설정된 div에 있습니다. 표시 : 없음; CSS의 - 페이지가 기본적으로로드되는 방식입니다.

에 제출하면을 제출하면 페이지를 다시로드하고 숨겨진 div에 문의 양식을 표시해야합니다. 페이지의 모든 자바 스크립트가 기본값으로 다시로드 된 이후로 어디에서 시작할 것인지 정확히 모르겠습니다. 또한 모든 PHP 이후로 나는 content_form div에서 앵커를 설정하거나 호출 할 수 없습니다.

감사합니다.

답변

1

양식이 성공적으로 전송 된 경우에만 스크립트를 작성할 수 있습니다.

그런 다음 그냥 자바 스크립트 (다음 PHP 코드와 유사) 차단하기 위해 요소 표시를 설정하는 에코 :

if($form_is_valid) 
{ 
    echo '<script type="text/javascript">' 
     . 'document.getElementById("elementID").style.display = "block";' 
     . '</script>'; 
} 
+0

연결 이유는 무엇입니까? –

+0

그래서 당신은 내가 한 일을 쉽게 볼 수있었습니다. 그것은 아무런 목적도 없습니다. – Breakthrough

2

은 내가 JS 하나 이상의 CSS 솔루션을 선호하는 것이다.

if ($form_is_valid) 
    echo '<style type="text/css">#contact { display: block; }</style>'; 

편집 : 그냥 일을 조금 청소기를 만들기 위해, 나는이 성공적으로 제출 된 경우 양식에 클래스를 추가하는 제안합니다. 이런 식으로 뭔가 : 다음

$class = $form_is_valid ? ' class="submitted"' : ''; 
echo '<form method="..." action="..."' . $class . '>...</form>'; 

, 당신은 단지의 display: none; 정의 다음에 오는 때문에 같은 CSS 정의 할 수 :

form.submitted { display: block; } 
+0

감사합니다. 나는 이것을 CSS의 새로운 div에 $ send_mail을 가리키고 동일한 div에 다시는 유효하지 않음을 가리 키기 위해 사용했다. 잘 작동합니다! 감사합니다. –

+0

도움이 될 수있어서 기쁩니다! 그것이 당신을 도운다면 당신의 받아 들인 대답으로 표시하는 것을 잊지 마십시오. –

0

혁신의 대답은 잘 작동합니다,하지만 나는 개인적으로 좋아하지 않는다 마크 업에 어떤 종류의 성공이나 오류 메시지라도 넣을 수 있습니다. 페이지로드시 실제로 CSS가 아닌 경우에도 숨길 수 있습니다. 양식이 제출 한 콘텐츠와 함께로드됩니다 당신이 경우

<?php if ($form_is_valid) include('SnippetFileWithSuccessMessageDivInIt.php') /> 
0

, 당신은 존재를 감지하기 위해 자바 스크립트를 사용할 수 있습니다 페이지 어쨌든 다시로드되어 있기 때문에, 이렇게하면이 문제를 해결하기 위해 자바 스크립트 또는 모든 CSS에 대한 필요성을 제거하는 것 입력란의 텍스트 내용이 있으면 display : block을 설정하십시오.

+0

양식에 기본값이있는 경우 문제가 될 수 있습니다. –

+0

예. 이 경우 기본값과 비교할 수는 있지만 부담 스럽습니다. –

관련 문제