使用jQuery,当下拉框更改时,我需要另一个输入字段,以便使用Coldfusion

pn9klfpd  于 2023-06-22  发布在  jQuery
关注(0)|答案(2)|浏览(108)

我有一个输出分配给项目的系统的表单。系统是循环的,可以动态添加新行,因此无法使用ID属性。
当用户更改状态下拉选项时,我需要关联的“状态生效日期”字段变为必填字段。我不知道如何很好地遍历DOM,以便用datepicker类定位字段。

<tr>  
    <th class="form">
        <label>Status</label>
    </th>  
    <td>
        <div style="float:left;">  
        <select class='status' name="status" >  
            <option value="New">New</option>  
            <option value="Existing">Existing</option>  
            and so on...  
        </select>  
        </div>
    </td>  
    <th class="form">
        <label>Status Eff. Date</label>
    </th>  
    <td>
        <div style="float:left;">  
            <input type="text" name="statuseffective" class="datepicker" size="15" >  
        </div>
    </td>  
</tr>

如果详细说明,该过程将像这样工作:
当用户对状态进行更改时,JS将找到包含class .datepicker和addClass('required ')的下一个输入字段,并将焦点设置为该字段(设置焦点是可选的,因为addClass'required'已经将该字段变为红色)。
我可以确定哪个下拉框发生了变化,但我无法到达下一个输入元素。任何帮助将不胜感激。

qni6mghb

qni6mghb1#

$('.status').change(function(){
    $(this).next('input.datepicker').addClass("required").focus();
});

应该可以

更新

好吧,那么...因为两个人的父母不一样,你必须上一层楼。next只查找直接的下一个元素,nextAll查找所有的元素(看起来像在同一个dom级别)。测试了一堆不同的方法,得出了这个结论:

$('.status').change(function(){
    $(this).parents('td').nextAll("td:first").find('.datepicker').focus()
});

这应该对你有用!

quhf5bfb

quhf5bfb2#

我们走吧编辑我的答案,因为我现在看到.datepicker与. status不在同一个父节点下。
$(“.status”).live(“click”,function(){ $(this).parent().find('input. datepicker').addClass(“required”).focus();)};

相关问题