0

我有一个表格行,看起来像在此处输入图像描述

HTML看起来像 在此处输入图像描述

当用户更改名称字段的值时,我将“选择”传递给 nameDropChanged 函数。在获得选择的参考后,我想更改“优惠券数量”选择框的值。如何使用 Jquery 获取对它的引用?表格中也会有许多这样的精确行。

更新:这是虚拟 HTML 代码和jsfiddle 链接

    <table id="competitors_table" width="100%" style="border-bottom: #000000 solid 1px;">
<tbody>
    <tr>
        <td>Name:<select name="CompetitorIDs_Setting_[]" onchange="nameDropDownChanged(this);">
            <option value="0">N/A</option><optgroup label="Similar Stores"></optgroup>
            <optgroup label="Other Stores">
            <option value="1">flipkart</option>
            <option value="2">bigshoebazaar</option>
            <option value="160">presto</option>
            <option value="3">fabindia</option>
            <option value="4">fashnvia</option>
        </td>
        <td>
            <select name="Position_Setting_[]" onchange="dropDownChanged(this);">
                <option value="1000">Top</option>
                <option value="1001">Middle</option>
                <option value="1002">Bottom</option>                                                    
                <option value="">Enter Position</option>
            </select>
            <input type="text" name="PositionNumber_Setting_[]" size="3" style="display: none;">
        </td>
        <td>Number of Coupons:<select id="numberOfCoupons_Setting_[]"></select></td>
    </tr>
</tbody>
</table>

Javascript代码

  function nameDropDownChanged(select)
{
    var selectedIndex = select.selectedIndex;   
    var WebsiteName = select.options[selectedIndex].innerHTML;
    var couponCount = <?php if(!empty($couponCount)){ echo json_encode($couponCount); }?>;

    if(Object.keys(couponCount).length > 0)
    {
        var numberOfCoupons = couponCount[WebsiteName];
        var numberOfCouponsDropDown = document.getElementById('numberOfCouponsSelect');
        $("#numberOfCouponsSelect").empty();
        if(numberOfCoupons > 0)
        {
            for(var i=1; i <= numberOfCoupons; i++)
            {
                var option = document.createElement('option');
                option.value = i;
                option.innerHTML = i;
                numberOfCouponsDropDown.appendChild(option);
            }
        }
        else
        {
            var option = document.createElement('option');
            option.value=1;
            option.innerHTML = "No Active Coupons";
            numberOfCouponsDropDown.appendChild(option);
        }
    }
}
4

2 回答 2

1

在 nameDropChanged 函数内..

// considering 'parameter' is the variable to be passed as a parameter to nameDropChanged function
$numberSelect = $(parameter).parent().nextAll(':last').children('select');
// $numberSelect is now containing a reference to the numberOfCoupons_Setting_[ select]
于 2013-10-21T07:49:20.710 回答
1

你可以做这样的事情

$('#Selector_ID1, #Selector_ID2, #Selector_ID3, ...').change(function() {
    var parent = $(this).parents("tr");
    var elm = $("td:last-child", parent).children("select");
    //Do your operation with last Select Element here.
});

这有两个方面的帮助

  1. 您不需要知道确切的父母和孩子,而只需反向跟踪父母,在第一种情况下是 TR,然后是父母中的最后一个 SELECT。
  2. 一次就可以处理多行。您也可以在此处使用类选择器。
于 2013-10-21T08:06:05.787 回答