【问题标题】:jquery dynamic added row display price form db on each row select optionjquery在每行选择选项上动态添加行显示价格表格db
【发布时间】:2014-06-12 18:22:11
【问题描述】:

您好,我在 jquery 任务中需要一些帮助,我创建了带有动态行添加的表。我希望当我选择选项值时,此价格显示在这一行的下一列中,每行中选择的选项值都会不同

我的代码在这里

<script type="text/JavaScript">
$(".name").change(function()
    {
    var id=$(this).val();
    var dataString = 'id='+ id;

    $.ajax
    ({
        type: "POST",
        url: "test.php",
        data: dataString,
        cache: false,
        dataType:"json",
        success: function(data)
        {
            $(".price").val(data.price);
            return false;
        } 
   });
});
</script>

HTML:

<table>
  <tr>
    <th>
      select item
    </th>
    <th>
      price
    </th>
  </tr>
  <tbody>
    <td>
      <select name="item[]">
        <option value="1">
          item name
        </option>
      </select>
    </td>
    <input type"text" name="price[]">
    <td>
    </td>
  </tbody>
</table>

【问题讨论】:

  • 您也可以粘贴您的 HTML 吗?
  • 表>
    选择商品 价格

标签: php jquery mysql jquery-ui


【解决方案1】:

从图片看起来你几个下拉菜单旁边有文本框,你想分别加载每个项目的价格,因为你需要做的事情:

  1. 改变

    $(".name").change(function()

    $("select[name^='item']").change(function()

    这意味着定位一个名称以 item 开头的select 标签。

  2. 改变

    $(".price").val(data.price);

    $(this).closest('tr').find("input[name^='price']").val(data.price);

    这意味着我们找到最接近selecttr 标记,然后找到名称以price tr 标记开头的input ,因此您的选择下拉值始终存储在下一个文本框中。

DEMO(这个链接只是为了让你了解它是如何工作的,AJAX 被注释了,因为 JSFiddle 不会运行它)。

【讨论】:

    【解决方案2】:

    对于动态行,您应该使用.on 方法。为元素添加一些类,以便轻松找到它们。

    这段代码应该可以工作:

    <table id="unit-price">
       <tr>
          <th>
             select item
          </th>
          <th>
             price
          </th>
       </tr>
       <tbody>
          <tr>
             <td>
                <select class="name" name="item[]">
                   <option value="1">item name</option>
                </select>
             </td>
             <td>
                <input type="text" class="price" name="price[]">
             </td>
          </tr>
       </tbody>
    </table>
    
    <script type="text/JavaScript">
        $("#unit-price").on('change', '.name', function () {
            var $this = $(this);
            $.ajax({
                type : "POST",
                url : "test.php",
                data : {
                    id : $this.val()
                },
                cache : false,
                dataType : "json",
                success : function (data) {
                    $this.parent()
                        // Get parent tr
                        .closest('tr')
                        // Then, find price textbox with class 'price'
                        .find('.price').val(data.price);
                }
            });
        });
    </script>
    

    【讨论】:

    • +1 我忘记了.on。 @OP 如果你有动态下拉菜单,你应该使用这个change 方法。
    【解决方案3】:

    我认为您可以使用 jQuery 的 nextUntil() 函数解决您的问题。

    在你的情况下,你可以打电话给$(this).nextUntil(".price").val(data.price);

    我不太确定这个,所以让我们知道这是否有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      • 2015-06-14
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 2019-01-25
      相关资源
      最近更新 更多