它们都具有相同的类名称时如何选择特定文本字段的值

时间:2019-05-09 00:20:01

标签: php jquery jquery-traversing

我有一个使用PHP(Laravel)中的foreach生成的表。该表有3列:“名称”,“注释”和“停用”。 “取消激活”是带有“激活和“不活动”选项的选择。“名称”列由带有class=name的文本输入字段组成。“取消激活”选项的类为edit_cat。 / p>

<tr>
   <td>{{ Form::text("category_name[]",$category->name,['class'=>'name',])}}</td>
   <td>{{ Form::text("notes[]",$category->notes)}}</td>
   <td>{{ Form::select("category_value[]",['active'=>'Active' ,'inactive' => 'Inactive'],$category->status,['class'=>'edit_cat'])}}</td>
</tr> 

当我从第3列中选择一个选项“停用”时,我的JQuery还需要获取第一列中“ category_name”的文本值。

我已经尽力在JQuery API和SO中找到了所有内容。我使用了closestfind以及input:text .nametd.name或其他十几种排列方式,但是我只得到undefined或一个错误。

 $(".edit_cat").on("change", function () {
       var value =  $(this).closest(".name-input").val();
       console.log(value);
    });

我在做什么错?非常感谢 !

1 个答案:

答案 0 :(得分:1)

var value = $(this).closest("tr").find("td .name").val();

你几乎把它弄了。

  1. 使用“最接近”来找到其最接近的父代,因为输入只是同级。
  2. 您需要进行最接近的父项tr,然后找到特定的输入。

closest()

  

说明:对于集合中的每个元素,通过测试元素本身并遍历DOM树中的祖先,获得与选择器匹配的第一个元素。