在复选框上提交输入文本

时间:2018-04-22 01:23:56

标签: php html codeigniter

我想提交一个表单,在选中当前行复选框时发布输入文本字段。

当我提交时,我获得了复选框的productID但是所有的productLink。我想只获取相应复选框的输入文本。

我该怎么做?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<main role='main'>
  <div class='counters'>
    <p>Question: <span class='js-question-counter'>0</span> / 10</p>
    <p>Score: <span class="js-score-counter">0</span></p>
  </div>
  <div class="quizdiv">
    <div class="quizform js-quizform-intro">
      <h2>Welcome, Willkommen, Bonjour, Buon giorno, Hola</h2>
      <p>Test your knowledge in everything space-related. Just click the button below and start the 10 question quiz.</p>
      <div class="controls">
        <button role='button' class="button js-quizform-submit">Start Quiz</button>
      </div>
    </div>
    <div class="quizform js-quizform-questions"></div>
    <div class="quizform js-feedback-page"></div>
    <div class="quizform js-quizform-evaluation"></div>
  </div>
</main>

3 个答案:

答案 0 :(得分:1)

你可以找到很多解决方案,所以在我看来你应该看看这个

  

HTML Element Array, name="something[]" or name="something"?

你可以这样做,但是有一些替代方法,例如,当用户选中复选框然后你可以调用javascript函数创建一个数组并发送json stringify数据你的php。

另一种方式如下;

你的HTML中的

<form  method="post">
 <table>
   <tr>
    <td><input type="checkbox" name="productId[]" value="<?= $products->id; ?>" /> <input type="text" name="productLink[<?= $products->id; ?>"]"></td>
   </tr>
   <tr>
    <td><input type="checkbox" name="productId[]" value="<?= $products->id; ?>" /> <input type="text" name="productLink[<?= $products->id; ?>"]"></td>
   </tr>
   <tr>
    <td><input type="checkbox" name="productId[]" value="<?= $products->id; ?>" /> <input type="text" name="productLink[<?= $products->id; ?>"]"></td>
   </tr>
   <tr>
    <td><input type="checkbox" name="productId[]" value="<?= $products->id; ?>" /> <input type="text" name="productLink[<?= $products->id; ?>"]"></td>
   </tr>
   <tr>
    <td><input type="checkbox" name="productId[]" value="<?= $products->id; ?>" /> <input type="text" name="productLink[<?= $products->id; ?>"]"></td>
   </tr>
  </table>
  <input type="submit" name="formSubmit" value="Submit" />
</form>

在你的php中(假设在codeigniter中,因为你标记了它)

function some_func_name(){
  $product_ids = $this->input->post('productId');
  $posted_product_links = $this->input->post('productLink');
  $selected_links = [];
  for($product_ids as $id){
    $p_link = $posted_product_links[$id];
    array_push($selected_links, array('id' => $id, 'link' => $p_link));
  }
}

我希望这对你有帮助..

答案 1 :(得分:0)

按照以下代码更新您的

<强> HTML

<form action="process.php" method="post">
    <table>
        <tr> 
            <td> 
                <input type="checkbox" name="productId[1]" value="<?=$products->id;?>" <?=  set_checkbox('productId[1]', $products->id);?> />
                <input type="text" name="productLink[1]" value="<?=  set_value('productLink[1]');?>"/>
            </td>
        </tr><tr>
            <td>
                <input type="checkbox" name="productId[2]" value="<?=$products->id;?>" <?=  set_checkbox('productId[2]', $products->id);?> />
                <input type="text" name="productLink[2]" value="<?=  set_value('productLink[2]');?>" />
            </td>
        </tr><tr>
            <td>
                <input type="checkbox" name="productId[3]" value="<?=$products->id;?>" <?=  set_checkbox('productId[3]', $products->id);?>/>
                <input type="text" name="productLink[3]" value="<?=  set_value('productLink[3]');?>" />
            </td>
        </tr><tr>
            <td>
                <input type="checkbox" name="productId[4]" value="<?=$products->id;?>" <?=  set_checkbox('productId[4]', $products->id);?> />
                <input type="text" name="productLink[4]" value="<?=  set_value('productLink[4]');?>" />
            </td>
        </tr><tr>
            <td>
                <input type="checkbox" name="productId[5]" value="<?=$products->id;?>" <?=  set_checkbox('productId[5]', $products->id);?> />
                <input type="text" name="productLink[5]" value="<?=  set_value('productLink[5]');?>" />
            </td>    
        </tr>
    </table>
    <input type="submit" name="formSubmit" value="Submit" />
</form>

<强>控制器

public function some_func_name(){
    if($this->input->post()){
        $checkbox = $this->input->post('productId');
        $textbox = $this->input->post('productLink');
        $selected = @array_intersect_key($textbox, $checkbox);

        echo '<pre>';
        print_r($selected);
    }
}

代码在这里:https://pastebin.com/UC1UFPRF

答案 2 :(得分:0)

我最终使用jquery在它们为空时移除了obj。

    $(document).ready(function(){
    $("form").submit(function(){
    $("input").each(function(index, obj){
          if($(obj).val() == "") {
               $(obj).remove();
              }
            });
      });
    });