简体   繁体   English

jquery通过名称属性获取值的问题

[英]jquery issue in getting value by name attribute

<%= attendance_form_id %> in jquery contains dynamic unique id of table generated in html view. jquery 中的<%= attendance_form_id %>包含在 html 视图中生成的表的动态唯一 id。
i am trying to get radio button value by name attribute project_director[status] .that has same attribute name inside every unique id.我正在尝试通过名称属性project_director[status]获取单选按钮值。每个唯一 ID 中都有相同的属性名称。 i am using alert to get value.我正在使用警报来获取价值。

currently my code correctly alerts form submitted value on first page load submission.目前我的代码在第一页加载提交时正确地提醒表单提交的值。 but second submission onward it alerts first submission alert value.但是第二次提交之后它会提醒第一次提交警报值。 once i reload page it works correct first time.一旦我重新加载页面,它第一次就可以正常工作。

how can i make alert work correct all time.我怎样才能使警报始终正确工作。

js 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 code 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>

If I understand correctly, you need to get value of input[name="project_director[status]"] inside the form that has <%= attendance_form_id %> id.如果我理解正确,您需要在具有<%= attendance_form_id %> id 的表单中获取input[name="project_director[status]"]的值。 In this case $('input[name="project_director[status]"]:checked').val() will not work as expected because you have multiple input with this name as mentioned ( has same attribute name inside every unique id ).在这种情况下, $('input[name="project_director[status]"]:checked').val()将无法按预期工作,因为您有多个具有此名称的输入(每个唯一 id 内都有相同的属性名称) . To make it work, you can use .find() :要使其工作,您可以使用.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")
 });
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM