jquery 在按名称属性获取值时出现问题

Posted

技术标签:

【中文标题】jquery 在按名称属性获取值时出现问题【英文标题】:jquery issue in getting value by name attribute 【发布时间】:2021-01-05 04:58:34 【问题描述】:

<%= attendance_form_id %> 在 jquery 中包含在 html 视图中生成的表的动态唯一 id。 我试图通过名称属性project_director[status]获取单选按钮值。在每个唯一ID 中具有相同的属性名称。我正在使用警报来获取价值。

目前我的代码在第一页加载提交时正确地提醒表单提交的值。但第二次提交之后它会提醒第一次提交警报值。一旦我重新加载页面,它第一次就可以正常工作。

我怎样才能让警报始终正确工作。

js

<script>
   $(document).on('turbolinks:load', function() 
     $('#<%= attendance_form_id %>').on('ajax:success', function(event)
      const [data, status, xhr] = event.detail
      //alert(status)
      value = $('input[name="project_director[status]"]:checked').val();
      alert(value)
      $('#<%= attendance_form_id %>').hide()
     ).on('ajax:error',function(event)
        alert("Something went wrong, please reload page")
     );
   );
</script>

html代码

<table id="attendance_form_29">
   <tbody>
      <tr>
         <td>
            <ul>
               <div>
                  <div class="wrapper-class">
                     <input type="radio" value="true" name="project_director[status]" id="project_director_status_true">
                     <label for="project_director_approve">Approve</label>
                     <br>
                     <input type="radio" value="false" name="project_director[status]" id="project_director_status_false">
                     <label for="project_director_reject">Reject</label>
                  </div>
  
               </div>
            </ul>
         </td>
         <td>
            <input value="4" type="hidden" name="project_director[user_id]" id="project_director_user_id">
            <input type="submit" name="commit" value="Submit" class="button primary small" data-disable-with="Submit">
         </td>
      </tr>
   </tbody>
</table>

【问题讨论】:

【参考方案1】:

如果我理解正确,您需要在具有&lt;%= attendance_form_id %&gt; id 的表单中获取input[name="project_director[status]"] 的值。在这种情况下,$('input[name="project_director[status]"]:checked').val() 将无法按预期工作,因为您有多个使用上述名称的输入(在每个唯一 id 中具有相同的属性名称)。要使其工作,您可以使用.find():

$(document).on('turbolinks:load', function() 
 $('#<%= attendance_form_id %>').on('ajax:success', function(event)
  const [data, status, xhr] = event.detail;
  //change here
  value = $('#<%= attendance_form_id %>').find('input[name="project_director[status]"]:checked').val(); 
  alert(value)
  $('#<%= attendance_form_id %>').hide()
 ).on('ajax:error',function(event)
    alert("Something went wrong, please reload page")
 );
);

【讨论】:

也许你没有检查收音机 我检查了所有表单的单选按钮问题都相同 你能试试console.log($(this).find('input[name="project_director[status]"]').val())吗? console.log($(this).find('input[name="project_director[status]"]').val())undefined 的输出相同 console.log($('#&lt;%= attendance_form_id %&gt;').find('input[name="project_director[status]"]:checked').val()) 怎么样?

以上是关于jquery 在按名称属性获取值时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

按下上传按钮时出现错误属性名称?

获取 QString 时出现分段错误

如何去除使用线性渐变属性时出现的条纹[重复]

如何去除使用线性渐变属性时出现的条纹[重复]

切换活动时出现Logcat错误导致应用程序在按下按钮后崩溃

访问属性时出现 EXC_BAD_ACCESS 异常