通过单击 CheckBox 数组显示文本框

Posted

技术标签:

【中文标题】通过单击 CheckBox 数组显示文本框【英文标题】:display a Textbox by clicking CheckBox array 【发布时间】:2020-08-14 12:32:45 【问题描述】:

我用复选框显示了一个项目列表。我希望用户检查他想要的项目并输入他想要的项目数量。我使用 CSS 隐藏了数量文本框 (txtQty)。我想如果你点击一个Item,就会出现对应的txtQty供你输入你想要的Quantity。 我正在使用 CodeIgniter。所以我已经成功地从 mysql 中通过 Model 拉取数据到 View 并显示出来,如随附的界面图片所示。我正在使用 Jquery 进行隐藏和显示。 The Interface

我的代码: 2。查看代码 (php)

<table class="card1 table table-striped table-bordered table-responsive" style="height: 350px; overflow: scroll">
    <thead>
        <tr>
            <th>SN</th>
            <th>Product</th>
            <th>Tick</th>
            <th>Quantity</th>
        </tr>
    </thead>
    <tbody>
        <?php $i=0; foreach($it as $r): $i++; ?>
        <tr>
            <td><?php echo $i; ?></td>
            <td><?=$r['Item'];?></td>
            <td>
                <label>
                    <input type="checkbox" name="item[]" value="<?=$r['Item']?>" id="jj">
                </label>
            </td>
            </td>
            <td> 
                <input type="number" name="qty[]" id="tx" style="display: none" />
                <input type="hidden" name="price" value="<?=$r['CostPrice']?>" />
            </td>
        </tr> 
        <?php endforeach?>
        <tr>
            <td colspan="3">
                <input type="submit" name="btnub" value="Send Order" class="btn btn-warning card1" />
            </td>
        </tr>
    </tbody>
</table>

3。我的 Jquery 代码。

<script>
    $(document).ready(function() 
        $('#jj').change(function () 
            if (this.checked) 
                $('#tx').show();
             else 
                $('#tx').hide();
            
        );
    );
</script>
    我还想知道现在如何在控制器中仅检索选定的项目和数量

【问题讨论】:

【参考方案1】:

这里有两个主要问题。首先,您的 PHP 循环正在创建具有重复 id 属性的 html。这是无效的,因为 id 必须 在 DOM 中是唯一的。将它们改为类。

因此,您不能再使用id 来选择#tx 元素。您需要使用 DOM 遍历通过它的类来选择它,以将其与已更改的特定复选框相关联。

另请注意,if 条件可以通过使用 toggle() 来简化,并且您的 HTML 有一个额外的 &lt;/td&gt; 可以删除。

说了这么多,试试这个:

jQuery($ => 
  $('.jj').on('change', function() 
    $(this).closest('tr').find('.tx').toggle(this.checked);
  );
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="card1 table table-striped table-bordered table-responsive" style="height: 350px; overflow: scroll">
  <thead>
    <tr>
      <th>SN</th>
      <th>Product</th>
      <th>Tick</th>
      <th>Quantity</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Foo</td>
      <td><label><input type="checkbox" name="item[]" value="100" class="jj"></label></td>
      <td>
        <input type="number" name="qty[]" class="tx" style="display: none" />
        <input type="hidden" name="price" value="50" />
      </td>
    </tr>
    <tr>
      <td>2</td>
      <td>Bar</td>
      <td><label><input type="checkbox" name="item[]" value="100" class="jj"></label></td>
      <td>
        <input type="number" name="qty[]" class="tx" style="display: none" />
        <input type="hidden" name="price" value="50" />
      </td>
    </tr>
    <tr>
      <td>3</td>
      <td>Fizz</td>
      <td><label><input type="checkbox" name="item[]" value="100" class="jj"></label></td>
      <td>
        <input type="number" name="qty[]" class="tx" style="display: none" />
        <input type="hidden" name="price" value="50" />
      </td>
    </tr>
    <tr>
      <td>4</td>
      <td>Buzz</td>
      <td><label><input type="checkbox" name="item[]" value="100" class="jj"></label></td>
      <td>
        <input type="number" name="qty[]" class="tx" style="display: none" />
        <input type="hidden" name="price" value="50" />
      </td>
    </tr>
    <tr>
      <td colspan="3">
        <input type="submit" name="btnub" value="Send Order" class="btn btn-warning card1" />
      </td>
    </tr>
  </tbody>
</table>

【讨论】:

谢谢罗里先生。有效。我能够选择并且数量框出现在选择中。 但是,现在的问题是:如何对用户选择的相应项目的价格求和以及如何获得金额:注意->金额=(数量之和)*(价格之和)

以上是关于通过单击 CheckBox 数组显示文本框的主要内容,如果未能解决你的问题,请参考以下文章

如何通过单击列表框行项将搜索结果返回到文本框

winform中文本框改为密码框

checkbox:click事件触发文本框显示隐藏

如何从下拉列表中单击链接并通过实时搜索显示在文本框中,然后在删除时删除值

html如何用checkbox 控制文本框中的内容.

JAVA 文本框单击清空