2012-07-20 4 views
2

저는 PHP와 Javascript가 처음인데, 두 개의 폼, 5 개의 체크 박스가있는 폼, 5 개의 라디오 버튼이있는 웹 사이트를 시작했습니다. 선택한 라디오 버튼 라디오 버튼을 변경하면 페이지가 새로 고침되고 새 값이 사용됩니다. 체크 박스와 동일합니다. 불행히도 양식 중 하나를 변경 한 다음 다른 양식을 변경하면 첫 번째 양식 값이 더 이상 존재하지 않게됩니다. 나는 경우에도 다른 형태의 변화를 보존하기 위해 두 형태의 입력을 얻으려고더블 폼 새로 고침

<form name='form2' method='post'> 
      <input type="radio" name="group1" value="all" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == null || $_REQUEST['group1'] == "all"){ echo "checked='checked'";}?>/> All<br> 
      <input type="radio" name="group1" value="Example" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "Example"){ echo "checked='checked'";}?>/> Example<br> 
      <input type="radio" name="group1" value="clifton" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "clifton"){ echo "checked='checked'";}?>/> Clifton<br/> 
      <input type="radio" name="group1" value="fruita" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "fruita"){ echo "checked='checked'";}?>/> Fruita<br/> 
      <input type="radio" name="group1" value="loma" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "loma"){ echo "checked='checked'";}?>/> Loma<br/> 
     </form> 


     <form name='form3' method='post'> 
      <input type="checkbox" name="option1" value="smoking" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option1'])){ echo "checked='checked'";} ?>/> No Smoking<br> 
      <input type="checkbox" name="option2" value="kids" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option2'])){ echo "checked='checked'";} ?>/>Good for Kids<br> 
      <input type="checkbox" name="option3" value="wheelchair" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option3'])){ echo "checked='checked'";} ?>/>Wheelchair Accessible<br> 
      <input type="checkbox" name="option4" value="alcohol" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option4'])){ echo "checked='checked'";} ?>/>Serves Alcohol<br> 
      <input type="checkbox" name="option5" value="delivery" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option5'])){ echo "checked='checked'";} ?>/>Delivery Servicee<br> 
     </form>   

:

여기에 코드입니다. 도움을 주시면 감사하겠습니다. 감사!

+0

문제를 설명했지만 문제는 어디에 있습니까? – bos

+0

그들에 대해 말할 수는 없지만 OP는 양쪽 입력 값 모두를 유지하기를 원합니다. – machineghost

+0

죄송합니다. @ machinghost이 맞습니다 ... – infinity

답변

1

더 나은 해결책은 AJAX를 사용하는 것입니다. 그러나 당신은 또한 반대 형태의 값에 해당하는 두 폼에 숨겨진 입력 필드를 추가 할 수 있습니다

<form name='form2' method='post'> 
     <input type="radio" name="group1" value="all" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == null || $_REQUEST['group1'] == "all"){ echo "checked='checked'";}?>/> All<br> 
     <input type="radio" name="group1" value="Example" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "Example"){ echo "checked='checked'";}?>/> Example<br> 
     <input type="radio" name="group1" value="clifton" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "clifton"){ echo "checked='checked'";}?>/> Clifton<br/> 
     <input type="radio" name="group1" value="fruita" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "fruita"){ echo "checked='checked'";}?>/> Fruita<br/> 
     <input type="radio" name="group1" value="loma" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "loma"){ echo "checked='checked'";}?>/> Loma<br/> 
    <?php foreach(range(1, 5) as $i): ?> 
     <?php if(isset($_REQUEST['option' . $i])): ?> 
      <input type="hidden" name="option<?php echo $i; ?>" value="1" /> 
     <?php endif; ?> 
    <?php endforeach; ?> 
</form> 


<form name='form3' method='post'> 
     <input type="checkbox" name="option1" value="smoking" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option1'])){ echo "checked='checked'";} ?>/> No Smoking<br> 
     <input type="checkbox" name="option2" value="kids" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option2'])){ echo "checked='checked'";} ?>/>Good for Kids<br> 
     <input type="checkbox" name="option3" value="wheelchair" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option3'])){ echo "checked='checked'";} ?>/>Wheelchair Accessible<br> 
     <input type="checkbox" name="option4" value="alcohol" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option4'])){ echo "checked='checked'";} ?>/>Serves Alcohol<br> 
     <input type="checkbox" name="option5" value="delivery" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option5'])){ echo "checked='checked'";} ?>/>Delivery Servicee<br> 
     <input type="hidden" name="group1" value="<?php echo (isset($_REQUEST['group1']) ? $_REQUEST['group1'] : 'all'); ?>" /> 
</form> 

편집 :Here is a demo을이 작업을 보여주는.

+0

감사합니다. 잘 했어! – infinity

0

이 입력을 하나의 양식 요소에 결합해야하는 양식 요소는 입력 필드의 정보 만 제출하고 다른 양식 요소의 데이터는 보낼 수 없습니다. 기본 양식 제출 조치를 방지하고 아약스

0

여기에는 모든 서버 측 코드가 누락되어 있지만 기본 문제를 설명하고 해결할 수 있기를 바랍니다.

두 가지 양식, form2와 form3이 있습니다. form2를 제출하면 form3의 데이터를 제출하지 않으며 그 반대도 마찬가지입니다. 따라서 서버가 새 페이지 (제출 후 보게되는 페이지)를 다시 보내면 다른 양식의 데이터가 반영되지 않습니다.

당신이해야 할 일은 두 양식의 데이터를 함께 보내는 것입니다. 이 작업을 수행하는 가장 간단한 방법은 하나의 양식을 사용하는 것입니다.하지만 원하는 경우 JS를 통해 값을 결합하거나 AJAX를 통해 값을 모두 제출할 수도 있습니다.

관련 문제