find()。val()返回undefined

时间:2017-05-10 05:14:51

标签: javascript jquery laravel

我试图使用find()。val()在jquery数据表中获取动态隐藏输入值,但它返回undefined。如何使它返回输入值?

//foreach instantiate
   <input style="display: none;" value="{{$userTable['username']}} - {{$userTable['name']}}" />

//end foreach instantiate

jquery试图获取隐藏输入的值。

 $.each($("#datacal_table tr"), function(){
        arrTableName.push($(this).find('input').eq(0).val());
      });

表的布局

    <table id="datacal_table" 
     class="table table-striped table-bordered" cellspacing="0">
       <thead>
          <tr>
           <th>Username</th>
           <th>Type</th>
           <th>Name</th>
           <th>Computation Sheet Name</th>
           <th>Status</th>
           <th>Date</th>
         </tr>
      </thead>
      <tbody id="dctbody">
      //foreach instantiation
       <tr>
      <td id="username_table">
          {{$userTable['username']}} <br>
          {{$userTable['name']}}

       <input style="display: none;" value="{{$userTable['username']}}
     - {{$userTable['name']}}" />
     </td>
    ......<td> values
     <tr>
    //end for each
  </tbody>
</table>

3 个答案:

答案 0 :(得分:0)

您需要找到input元素,而不是p标记。虽然此处不需要eq()方法,因为val()方法返回第一个元素的值。

arrTableName.push($(this).find('input').val());
//                           ---^^^^^---

// or more specific to get hidden element
arrTableName.push($(this).find('input:hidden').val());
//                           ---^^^^^^^^^^^^^---

仅供参考: input元素是自动关闭的,因此不需要</input>

答案 1 :(得分:0)

为了更准确,您应该查找tbody部分tr元素,以及input元素。此外,您不应该寻找p个元素。

 $.each($("#datacal_table tbody tr"), function(){
    arrTableName.push($(this).find('input').val());
 });

答案 2 :(得分:0)

你可以这样使用

 $("#datacal_table > tbody  >").each(function(){
  arrTableName.push($(this).find('input:hidden').val());
  })

使用直接子选择器(>),您将走过直接后代(而不是所有后代)