2013-07-11 4 views
0

아래 양식을 작성했습니다. 사용자가 필드 수 (예 : 6)를 입력하면 아래 표에 6 개의 행이 있음을 알 수 있습니다. 제출 단추없이이 작업을 수행 할 수 있다면 (이 작업을위한 트리거가 텍스트 입력 상자에서 나오기 때문에) 좋을 것입니다. 이 같은 결과를 얻을 것이다 방법에 비해, (버튼을 제출하지 않고) 할 수없는 경우html과 php로이 작업을 수행 할 수 있습니까?

<fieldset> 
    <legend>Student Information</legend> 
    Number of fields: <input type="text"><br /> 
    Total number of characters: <input type="text"> 
    <br> 
    <br> 
    <table border="1"> 
    <th></th> 
    <th>field</th> 
    <th>number of characters</th> 
    <tr> 
     <td>1</td> 
     <td><input type="text"></td> 
     <td><input type="text"></td> 
    </tr> 
    <tr> 
     <td>2</td> 
     <td><input type="text"></td> 
     <td><input type="text"></td> 
    </tr> 
    </table> 

    </fieldset> 

: 여기

enter image description here

이 양식의 HTML 코드? 어떤 도움이나 제안을 해주셔서 감사합니다.

+2

JavaScript로 확인하십시오. – j08691

+0

@ j08691 순수한 PHP/html 솔루션이 있습니까? JavaScript로이를 구현하기가 어렵습니까? – balboa

+1

제출 버튼이 없으면 jquery를 제안하거나 ajax를 사용하여 (PHP에서 처리를 수행 할 수 있지만 다시 javascript 사용) 제출 버튼을 사용하면됩니다. 그러나 PHP/html 전용 솔루션을 사용할 수 있습니다. – Waygood

답변

1

좋아는 이후에만 스크립트 당신입니다 필요

<?php 
    $rows=2; 
    if(isset($_POST['submit'])) 
    { 
    if($_POST['submit']=='Update') 
    { 
     if(isset($_POST['rows'])) $rows=max($rows, intval($_POST['rows'])); // minimum 2 rows 
    } 
    else 
    { 
     // process posted data here 

     // reset post or jump to another page 
     $_POST=array(); 
     //header("Location:index.php"); 
     //exit(); 
    } 
    } 
?> 
<form method="post"> 
<fieldset> 
    <legend>Student Information</legend> 
    Number of fields: <input type="text" name="rows" value="<?php echo $rows; ?>"><br /> 
    Total number of characters: <input type="text"> 
    <input type="submit" name="submit" value="Update"/> 
    <br> 
    <br> 
    <table border="1"> 
    <th></th> 
    <th>field</th> 
    <th>number of characters</th> 
    <?php 
     for($loop=1;$loop<=$rows;$loop++) 
     { 
      echo '<tr>'; 
      echo '<td>'.$loop.'</td>'; 
      echo '<td><input name="field['.$loop.']" value="'.$_POST['field'][$loop].'" /></td>'; 
      echo '<td><input name="chars['.$loop.']" value="'.$_POST['chars'][$loop].'" /></td>'; 
      echo '</tr>'; 
     } 
    ?> 
    </table> 
    <input type="submit" name="submit" value="Submit"/> 
    </fieldset> 
</form> 

기본적으로 2 행 (기본값)이며 행을 업데이트 할 때 데이터가 유지됩니다.
행이 줄어들면 마지막 셀이 사라집니다.

+0

고마워요! 당신은 많은 도움을 받았습니다. – balboa

3

PHP는 서버 측입니다. PHP는 페이지가로드 될 때 한 번만 실행됩니다. HTML은 프로그래밍 언어가 아닙니다. PHP를 사용하여 테이블을 생성 할 수 있지만 페이지를 다시로드 한 제출 버튼이있는 경우에만 가능합니다. 사용자 이벤트로 인해 발생해야하는 경우에는 항상 자바 스크립트를 사용해야합니다.

즉, 이 필요합니다. 페이지를 다시로드하지 않고도이 작업을 수행하려면 자바 스크립트가 필요합니다. 이상적으로는 Javery (자바 스크립트에서 가장 많이 사용되는 플러그인)를 사용하여 DOM을 조작하는 것이 좋습니다.

<input id="field" type="text"> 

당신은이 같은 온 휴가 이벤트 호출 할 수 있습니다 : 당신이 입력 한 경우

실제 테이블을 생성에 관해서는

$("p").focusout(function() 
{ 
    // Delete the previous table, and create a new one, here 
}); 

를, 그것은 복잡하지 않지만 약간의 작업입니다. 당신은 당신을 시작하려면 다음 참조를 읽어야

http://www.tutorialspoint.com/jquery/jquery-dom.htm

당신은 "설치"해야합니다

JQuery와 전에 손을 수행 할 수 있습니다 코드의 상단에 간단한 삽입이 :

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> 
+0

고맙습니다. 왜냐하면 저는 이것들에 초보자이기 때문에, 버튼이 없거나 그와 비슷한 것을 제출하지 않고 JavaScript를 만들면 고통이 덜한 것 같아서 궁금합니다. ? 도와 주셔서 감사합니다. – balboa

+1

PHP는 서버 측이므로 페이지가로드 될 때 한 번만 실행됩니다. HTML은 프로그래밍 언어가 아닙니다. PHP를 사용하여 테이블을 생성 할 수 있지만 페이지를 다시로드 한 제출 버튼이있는 경우에만 가능합니다. 사용자 이벤트로 인해 발생해야하는 경우에는 항상 자바 스크립트를 사용해야합니다. –

1

PHP로만 가능할 것입니다.

당신이 '6'행에 입력한다면 예를 들어, 양식 게시물을 잡을 수 있고합니다 (HTML 내에서의 템플릿 양식) 그런 짓을 : 여기

<?php for($i=0; $<=$_POST['rows'];$i++): ?> 
<!-- This being your whatever html for the table --> 
<tr><td></td></tr> 

<?php endfor; ?> 
+0

나는 그것을 얻지 않는다, 나는 어떻게 모양 지위를 붙잡는다. 시간이 걸리지 않으면 내 양식으로 이것을 구현할 수 있습니까? 당신의 노고에 감사드립니다. – balboa

+0

그는 PHP로 가능하다는 뜻이지만 페이지를 새로 고침합니다. –

+0

먼저 입력 방법을 사용하여 양식을 입력란에 입력해야합니다. 제출 버튼이 필요합니다. 입력 한 코드 행은 입력 필드에 입력 한 행 수를 나열합니다. –

관련 문제