Jquery 如何获取每个下拉列表和文本区域行的id

Jquery 如何获取每个下拉列表和文本区域行的id,jquery,sharepoint-designer,Jquery,Sharepoint Designer,不确定解决这个问题的正确方法是什么 我想根据下拉列表中选择的内容控制te textarea原因。正如您在下面看到的,我已经到了可以获取下拉列表状态的每一行的属性id的阶段,但是我无法获取每个textarea状态的属性id 我的最终结果应该是,如果用户选择拒绝,那么用户只需输入原因,如果停用,则必须输入日期。提前谢谢 <tr> <td class="ms-vb"><span dir="none"> <select class="ms-RadioText"

不确定解决这个问题的正确方法是什么

我想根据下拉列表中选择的内容控制te textarea原因。正如您在下面看到的,我已经到了可以获取下拉列表状态的每一行的属性id的阶段,但是我无法获取每个textarea状态的属性id

我的最终结果应该是,如果用户选择拒绝,那么用户只需输入原因,如果停用,则必须输入日期。提前谢谢

<tr>
<td class="ms-vb"><span dir="none">
<select class="ms-RadioText" title="Status" id="WebPartManager_g_31f0d9e1_72a0_4ef2_b286_7c30cd0fda1f_ff5_3_ctl00_DropDownChoice" name="WebPartManager$g_31f0d9e1_72a0_4ef2_b286_7c30cd0fda1f$ff5_3$ctl00$DropDownChoice">
<option value="Provisionally Approved" selected="selected">Provisionally Approved
</option>
<option value="Approved">Approved</option>
<option value="Declined">Declined</option>
<option value="Deactivated">Deactivated</option>
</select><br>
</span></td>
<td class="ms-vb">
<span dir="none">
<textarea dir="none" class="ms-long" title="Reason" id="WebPartManager_g_31f0d9e1_72a0_4ef2_b286_7c30cd0fda1f_ff11_3_ctl00_ctl00_TextField" cols="20" rows="6" name="WebPartManager$g_31f0d9e1_72a0_4ef2_b286_7c30cd0fda1f$ff11_3$ctl00$ctl00$TextField" style="display: none;">Test3</textarea><br>
</span></td>

</tr>
$(document).ready(function(){

 $("textarea").hide(); 
 $("input[title$='DeActivatedDate']").hide(); 


 $("tr select[title='Status']").change(function () {




        var selectedValue = $(this).find("option:selected").text();


        if (selectedValue == 'Declined')
        {


       alert('You need to type in a Reason if STATUS is DECLINED!');


        //i'm getting the id of each dropdown row here
        var select_id = $(this).attr('id');  
        var b = $("#" + select_id).text();
        alert(select_id);
        //i can get the id of each Dropdown  of each row


         //i'm getting the id of each textarea row here
        var textarea_id = $("tr td textarea").attr('id'); 
        var c = $("#" + textarea_id).text();
        alert(textarea_id);

        //i'm only getting the attr id of the first textarea but not the other



       }

        if (selectedValue == 'Deactivated')
        {

        alert('You need to select a De-Activated Date if STATUS IS DEACTIVATED!');
       }




      });
});

临时批准
经核准的
拒绝
解散

测试3
$(文档).ready(函数(){ $(“textarea”).hide(); $(“输入[标题$='DeActivatedDate'])。隐藏(); $(“tr选择[title='Status'])。更改(函数(){ var selectedValue=$(this).find(“选项:selected”).text(); 如果(selectedValue==‘谢绝’) { 警报('如果状态为谢绝,则需要键入原因!'); //我在这里得到每一个下拉行的id var select_id=$(this.attr('id'); var b=$(“#”+选择_id).text(); 警报(选择_id); //我可以获得每行的每个下拉列表的id //我在这里获取每个textarea行的id var textarea_id=$(“tr td textarea”).attr('id'); var c=$(“#”+textarea_id).text(); 警报(textarea_id); //我只获取第一个文本区域的属性id,而不获取另一个文本区域的属性id } 如果(selectedValue==“已停用”) { 警报('如果状态为停用,则需要选择停用日期!'); } }); });

仅获取匹配集中第一个元素的属性值

因此:

var select_id = $(this).attr('id');
之所以有效,是因为
元素,因此只有一个元素。
一个:

var textarea_id = $("tr td textarea").attr('id');
只需获取第一个
id
属性。如果需要所有
元素,请使用:

如果您有一个DOM对象(
this
每个
中),您不需要使用
attr
来获取ID,您可以直接访问该属性

如果您只需要与
位于同一行的
(如注释中所述),则可以使用向上走一点DOM,然后再向下走:

var textarea_id = $(this).closest('tr').find('textarea').attr('id');
表行中有多个
元素,您需要全部元素,然后将这两种方法结合起来:

$(this).closest('tr').find('textarea').each(function() {
    // ...
});

谢谢但我不需要所有textarea的id。我只需要与dropdownlist位于同一行的id。我需要将所选项目与textarea框中的值进行比较。如果选择的值被拒绝,那么用户必须在文本区域的相应行中添加一些文本。Thank mu太短将尝试让您知道Thank Alo mu太短您可以点击
$(this).closest('tr').find('textarea').each(function() {
    // ...
});