2014-12-29 3 views
-2

나는이 간단한 양식양식을 동적으로 작성하는 방법은 무엇입니까?

<form action="" method="post" class="smart-green"> 
    <h1>Contract Form 
     <span>Please fill all the texts in the fields.</span> 
    </h1> 
    <label> 
     <span>Client:</span> 
     <input type="text" name="client" placeholder="Your Client Name" /> 
    </label> 

    <label> 
     <span>Your Name (Salesman):</span> 
     <input type="text" name="salesman" placeholder="Name" /> 
    </label> 
    <label> 
     <span>Construction Name:</span> 
     <input type="text" name="construction" placeholder="Construction Name" /> 
    </label> 
    <label> 
     <span>City:</span> 
     <input type="text" name="city" placeholder="City" /> 
    </label> 

    <label> 
     <span>Items:</span> 
     <input type="text" name="id_item" placeholder="Item" /> 
    </label>  

    <label> 
     <span>&nbsp;</span> 
     <input type="button" class="button" value="Send" /> 
    </label>  
</form> 

그것은 주문 형태입니다 있습니다. 내가 입력 할 항목의 값을 입력 할 수 있어야합니다 (예를 들어 5). 그러면 5 번 나타나는 "항목"입력이 필요합니다. 나는 또한 그것을 제거 할 수 있어야합니다, 그래서 사용자는 자신을 바로 잡을 수 있습니다. Javascript로 코드하는 법을 알지 못해서 이것이 가능합니까? 방법? 나중에 컨트롤러에 배열로 액세스해야합니다. 그게 필드의 이름을 배열로 가지는 이유입니다. 당신의 도움에 미리 감사드립니다.

EDIT : 방금 내가 여기에 필요한 것과 비슷한 것을 발견했습니다. http://www.sanwebe.com/2013/03/addremove-input-fields-dynamically-with-jquery 저는 버튼이되기를 원하지 않지만, 숫자를 입력하고 필드에 제한이 없기를 바랍니다. 나는 자바를 알고 있었으면 좋겠어 : <

EDIT2 : 어쩌면 나는 그것을 썼다지만, 자바 스크립트를 사용할 수 있습니다, 나는 그걸 제대로 programm하는 법을 모릅니다. 그래서 자바 스크립트에서 그것을 달성하는 방법을 알고 있다면 기쁜.

+0

형식 값을 세션 배열에 저장할 수 있어야합니다. – Rasclatt

+0

양식에서 데이터를 처리하는 데 문제가 없지만 양식을 먼저 작성해야합니다. 내가 말했듯이, 필드에 5를 입력하고 5 개의 필드가 삭제 옵션과 함께 나타나야합니다. – Arcane

+0

기본적으로 사용할 수있는 동적 필드 수를 추적하는 세션에 값을 저장하는 버튼이 있습니다. 할당 된 값이 있으면 세션 배열에도 저장됩니다. – Rasclatt

답변

0

사용자에게 주문할 항목 수를 묻는 것처럼 들리면 사용자가 페이지를 제출할 때 $_SESSION을 사용하여 양식 데이터를 배열에 저장하십시오. 표시된 다음 페이지는 사용자가 완료 할 수 있도록 항목 텍스트 요소를 제공합니다.

당신은 기본적으로 할 것을 : $_POST['id_item']for 루프 를 사용 id_item에 따라 $_SESSION

  • 생성 항목 입력에
    • 저장 모든 변수를 설정

      • 시작 세션
      • 경우
    • 자바 스크립트가 만들 것입니다 : 항목이 을 제공하는 경우
    • 그렇지 않으면 이
      • 디스플레이의 초기 형태는

    (개인 노트 새로운 상품 정보와 결혼, $_SESSION에서 이전 양식 데이터를 검색 이 훨씬 좋고 쉽게)

  • +0

    글쎄 나는 항상 그가 입력하고 싶은 항목의 수에 대한 정보를 요구할 수 있고, 양식을 제출하고 항목에 대한 새로운 양식으로 다음 페이지를로드하고 전에 페이지에 입력 된 값으로주기를 사용할 수 있습니다. 한 페이지에서 모든 작업을 수행 할 수 있다면 더 좋을 것입니다. 그러나 다른 대답이 없을 것이라는 점을 명심하십시오. – Arcane

    0

    스크립팅 언어가 없으면 이것이 가능하다고 생각하지 않습니다. 이전 항목을 선택한 각 항목을 표시 할

    <div id="item1div"> 
    Item 1:<input name="item1" value="" onFocus="getElementById('item2div').style.display='block';"> 
    </div> 
    <div id="item2div" style="display:none;"> 
    Item 2:<input name="item2" value="" onFocus="getElementById('item3div').style.display='block';"> 
    </div> 
    ... 
    <div id="item10div" style="display:none;"> 
    Item 10: <input name="item10" value=""> 
    </div> 
    

    이 : 난 당신처럼, 디스플레이 이후의 요소를 수행하는 간단한 '인라인'스크립트를 사용할 수도있을 것 같군요. 자체 문제가 발생하며 사용자가 묻는 것을 실제로 단순화하지만 JS에 함수를 작성하지 않고도 기본 목표를 달성 할 수 있습니다.

    +0

    자바 스크립트를 사용할 수 있습니다. 그것은 바람직하다. – Arcane

    0

    여기 내가 세션 + PHP를 사용할 때 언급했던 내용입니다. javascript가 최적 일지라도 PHP로이 모든 작업을 수행 할 수 있습니다. 세션 입력을 제거하는 방법은 포함하지 않았지만 다른 양식 요소를 사용하는 것으로 충분합니다. 또한, 내가 다시로드에 어떤 메아리 값을 완료하지 않았습니다.이 옵션은 자바 스크립트를 사용하지 않으려는 경우에만 사용할 수 있습니다.

    <?php 
        // Put at top of page 
        session_start(); 
        // Also somewhere at top of page 
        // Check post empty and assign post to a session for continual use 
        if(!empty($_POST)) { 
          $_SESSION['form'] = $_POST; 
         } ?> 
    
    <form action="" method="post" class="smart-green"> 
        <h1>Contract Form 
         <span>Please fill all the texts in the fields.</span> 
        </h1> 
        <label> 
         <span>Client:</span> 
         <input type="text" name="client" placeholder="Your Client Name" /> 
        </label> 
    
        <label> 
         <span>Your Name (Salesman):</span> 
         <input type="text" name="salesman" placeholder="Name" /> 
        </label> 
        <label> 
         <span>Construction Name:</span> 
         <input type="text" name="construction" placeholder="Construction Name" /> 
        </label> 
        <label> 
         <span>City:</span> 
         <input type="text" name="city" placeholder="City" /> 
        </label> 
    
        <label> 
         <span>Items:</span> 
         <input type="text" name="id_item" placeholder="Item" /> 
        </label>  
        <label for="new">Add Fields</label> 
        <select name="new" id="new"> 
         <option value="">Select</option> 
         <option value="1">Add 1</option> 
         <option value="2">Add 2</option> 
         <option value="3">Add 3</option> 
         <option value="4">Add 4</option> 
        </select> 
        <?php 
         // This checks if new has been posted 
         if(isset($_POST['new']) && $_POST['new'] >= 1) { 
         // Check if there are inputs in the queue 
         $count = (isset($_SESSION['form']['new_input']) && !empty($_SESSION['form']['new_input']))? count($_SESSION['form']['new_input']):1; 
         // Loop 
         for($i = $count; $i <= $_POST['new']+$count; $i++) { ?> 
        <input type="text" name="new_input[<?php echo $i; ?>]" id="new-<?php echo $i; ?>" /> 
        <?php } 
        } 
    
        // Loop through sessioned inputs 
        if(isset($_SESSION['form']['new_input'])) { 
         $i = 0; 
         foreach($_SESSION['form']['new_input'] as $key => $value) { ?> 
        <input type="text" name="new_input[<?php echo $key; ?>]" id="new-<?php echo $key; ?>" value="<?php echo strip_tags($value); ?>" /> 
        <?php } 
        } ?> 
        <button name="add_new" value="new">Add New</button> 
    
        <label> 
    
         <span>&nbsp;</span> 
         <input type="button" class="button" value="Send" /> 
        </label> 
    </form> 
    
    +0

    왜 유권자인지에 대해 유익한 반증을 보내 주셔서 감사합니다. 건배. – Rasclatt

    +0

    이 정보는 유용하지만 숫자 필드에 직접 입력해야합니다. 한 번은 20 개의 항목이있는 양식이 필요합니다. 필요할 때까지 3 번으로이 옵션을 클릭해야합니다. 실용적이지 않습니다. 또한 나는 그것을 다시 이동할 수 있어야한다. Javascript에서 어떻게하는지 알고 있습니까? – Arcane

    +0

    필자의 예제는 PHP로 동적 입력을 만드는 배후의 논리를 보여줍니다. 당신이하려는 것은 PHP로 모두 할 수 있지만, JavaScript에 비해서는 매우 어색합니다. "동적 입력 jquery"를 검색하면 필요한 것을 불러올 것입니다. – Rasclatt

    관련 문제