php
  • jquery
  • 2014-04-02 28 views 0 likes 
    0

    所以我有一個窗體。該表單默認由10行組成。它是這樣的:

    <form method="post" action="actionhere"> 
    <?php 
        for($i=0; $i<10;$i++) { 
    ?> 
        <div class='clone_me'> 
        <span>Line <?php echo $i;?></span> 
    
        <input type='checkbox' name='ck_<?php echo $i;?>'/> 
        <input type='text' name='tx_<?php echo $i;?>'/> 
        </div> 
    <?php } ?> 
    <input type='submit' name='submit' value='Submit'/> 
    </form> 
    

    所以表單內,我們將有10列複選框+文本框。

    我想要做的是,我想放置一個按鈕來添加新行(複選框+文本框)。現在,問題是,我需要$ i值(因爲它是for循環的形式)。有可能當我們點擊添加行按鈕時,我們爲循環設置的$ i的值在每次點擊時會增加1?我知道我們可以使用jquery克隆div,但$ i值如何?

    +0

    計算Javascript中現有行的總數。將數字1添加到它,然後它會是你的新'我'。 –

    +1

    您無法修改服務器端變量,即$ i使用客戶端腳本,即按鈕單擊。 – dikesh

    回答

    1

    那麼,基本上沒有。生成html時,您的PHP腳本已經結束。所以你不能再依賴於PHP。但是你不需要使它明確出現在你的html中。
    你應該使用jQuery計算行數:

    var i = $('form').find('.clone_me').length 
    

    ,然後再添加一個新的使用行的javascript:

    $('form .clone_me:last').clone().insertAfter('form .clone_me:last'); 
    
    0

    可能是這可以是,但有一些限制

    ,如果您有頁面重新加載沒有問題,你可以做到這一點: -

    通過這種方式您的網頁將重新加載,並在文本框和複選框的值將去NE:--- :)

    每一次新的頁面生成,並通過服務器發送到客戶端瀏覽器

    <?php 
    
    if(isset($_POST['submit'])){ 
    
    $ends = $_POST['ttl_rows']; 
    
    }else{ 
    
    $ends = 10; 
    
    } 
    
    ?> 
    
    
    
    <form method="post" action="#"> 
    <?php 
        for($i=1 ; $i<$ends;$i++) { 
    ?> 
        <div class='clone_me'> 
        <span>Line <?php echo $i;?></span> 
    
        <input type='checkbox' name='ck_<?php echo $i;?>'/> 
        <input type='text' name='tx_<?php echo $i;?>'/> 
        </div> 
    <?php } ?> 
    
    <input type='hidden' name='ttl_rows' value='<?php echo ($i+1); ?>'/> 
    <input type='submit' name='submit' value='Submit'/> 
    </form> 
    
    2

    我認爲你正在做它在錯誤的方式,你不需要$i裏面的值name屬性你有使用陣列它例如

    <form method="post" action="test.php"> 
        <div class='clone_me'> 
         <span>Line 1</span> 
          <input type='checkbox' name='ck[]'/><!--this field should menditory--> 
          <input type='text' name='tx[]'/> 
         <span>Line 2</span> 
          <input type='checkbox' name='ck[]'/><!--this field should menditory--> 
          <input type='text' name='tx[]'/> 
        </div> 
        <input type='submit' name='submit' value='Submit'/> 
        </form> 
    

    立即實現actionhere.php這個代碼

    <?php 
        $cks = $_POST['ck']; 
        $txs = $_POST['tx']; 
    
        foreach($cks as $key => $ck) { 
         echo $ck."<br>"; 
         echo $txs[$key]."<br>"; 
        } 
    ?> 
    
    1
    <input type='hidden' name='counter' id='counter'/> 
        <input type='checkbox' name='chk' id='chk'/> 
        <?php 
    
        $counter=$_POST['counter']; 
    
    
        for($i=0;$i<=$counter;$i++) 
    
        { 
        $chk=$_POST['chk'.$i]; 
        // Your Insert Code Here 
        } 
    
    
    
        ?> 
    
    相關問題