2017-03-09 4 views
1

숨겨진 요소를 양식 직렬화에서 제외시키는 방법을 모색하고 있습니다.숨겨진 양식 요소를 양식 직렬화로 제외하는 방법

$("#form-user :not(.hide_element) > :input").serialize(); 

하거나 하나 :

나는이 코드를 사용하려고

$("#form-user").not(".hide_element > input").serialize(); 

을 여전히

나는 내부의 양식을 넣어 한 동일한 형태의 데이터 응답을 가지고 내 모달.

<div class="modal-body"> 
     <?php echo form_open('#',array("class"=>"form-horizontal","id"=>"form-user")); ?> 
     <div id="message"></div> 
      <div class="form-group"> 
       <label class="control-label col-md-3">Username:</label> 
       <div class="col-md-9"> 
       <input type="text" name="uname" class="form-control"> 
       </div> 
      </div> 
      <div class="form-group hide_element" > 
       <label class="control-label col-md-3" id='lblpass'>Password:</label> 
       <div class="col-md-9"> 
       <input type="password" name="pass" class="form-control"> 
       </div> 
      </div> 
      <div class="form-group hide_element"> 
       <label class="control-label col-md-3" id='lblnewpass'>Confirm Password:</label> 
       <div class="col-md-9"> 
       <input type="password" name="confirmpass" class="form-control"> 
       </div> 
      </div> 
      <div class="form-group"> 
       <label class="control-label col-md-3">Email Address:</label> 
       <div class="col-md-9"> 
       <input type="email" name="email" class="form-control"> 
       </div> 
      </div> 
      <div class="form-group"> 
       <label class="control-label col-md-3">User Status:</label> 
       <div class="col-md-9"> 
       <select name="userstatus" class="form-control"> 
       <option hidden>Select user status of the account (Default = Active)</option> 
       <option value="1">Active</option> 
       <option value="2">Inactive</option> 
       </select> 
       </div> 
      </div> 
      <div class="form-group"> 
       <label class="control-label col-md-3">User Type:</label> 
       <div class="col-md-9"> 
       <select name="usertype" class="form-control"> 
       <option hidden>Select user type of the account (Default = Customer)</option> 
       <option value=1>Customer</option> 
       <option value=2>Admin</option> 
       </select> 
       </div> 
      </div> 
     <div class="modal-footer"> 
      <button class="btn btn-success" type="button" id="action"><i class="fa fa-save"></i> Add user</button> 
      <button class="btn btn-danger" type="button" data-dismiss="modal"><i class="fa fa-close"></i> Close</button> 
     <?php echo form_close(); ?> 

내 아약스 기능 :

$(document).ready(function(){ 
$('#form-user').on('click','#action',function(e){ 
    e.preventDefault(); 
    if(action == 'add'){ 
    $.ajax({ 
     url: site_url('User/add_user'), 
     data: $("#form-user :not(.working) > input").serialize(), 
     type:'POST', 
     encode: true, 
     dataType:'json', 
     success:function(data){ 
      if(!data.success){ 
       if(data.errors){ 
        $('#message').html(data.errors).addClass('alert alert-danger'); 
       } 
      }else{ 
       $('#message').html("").removeClass('alert alert-danger'); 
       $('.modal-title').html('Processing request'); 
       $('#alert').modal('show'); 
       $('#mymodal').modal('hide');     
       $('#body-message').html("<i class='fa fa-spinner fa-pulse fa-3x fa-fw'></i> Updating..."); 
       setTimeout(function(){ 
        $('#body-message').html("<i class='fa fa-check fa-3x'></i>"+ data.message); 
       },3000) 
       setTimeout(function(){ 

        $('#alert').modal('hide'); 
        $('#form-user')[0].reset(); 
        reloadData(); 
       },5000); 
      } 

     } 
    }); 
    }else{ 
     $.ajax({ 
     url: site_url('User/update_user'), 
     data: $("#form-user :not(.working) > :input").serialize() +"&id=" + id, 
     type:'POST', 
     encode: true, 
     dataType:'json', 
     success:function(data){ 
      if(!data.success){ 
       if(data.errors){ 
        $('#message').html(data.errors).addClass('alert alert-danger'); 
       } 
      }else{ 
       $('#message').html("").removeClass('alert alert-danger'); 
       $('.modal-title').html('Processing request'); 
       $('#alert').modal('show'); 
       $('#mymodal').modal('hide');     
       $('#body-message').html("<i class='fa fa-spinner fa-pulse fa-3x fa-fw'></i> Updating..."); 
       setTimeout(function(){ 
        $('#body-message').html("<i class='fa fa-check fa-3x'></i>"+ data.message); 
       },3000) 
       setTimeout(function(){ 

        $('#alert').modal('hide'); 
        $('#form-user')[0].reset(); 
        reloadData(); 
       },5000); 
      } 

     } 
    }); 
    } 
}); 
}); 
+0

$ ("# 양식 사용자")'으로 시도 찾을 수 있습니다 ("입력 : 보이는")) (직렬화,' – yomisimie

+0

을 잘 든.. 작동하지만 숨겨진 요소 대신 두 개의 보이는 요소를 제외합니다 (모두 드롭 다운 선택 태그). –

+0

jquery 쿼리는 단지 CSS 쿼리이므로'$ ("# form-user")와 같이'select'를 추가 할 수 있어야합니다. ("input : visible, select : visible"). serialize();'- 도움이 되길 ... – Gunnar

답변

0

장애 요소를 게시하거나 직렬화되지 않습니다, 당신은 일시적으로 추가 할 수 있도록 disabled 속성 그들과 성공적인 응답 후 이전 상태로 복원 :

$('#form-user').on('click','#action',function(e){ 
    $("#form-user .hide_element > input").attr('disabled','disabled'); 
    $.ajax({ 
    ... 
    data: $("#form-user").serialize(), 
    success:function() { 
     $("#form-user .hide_element > input").removeAttr('disabled'); 
    } 
    }); 
}); 
+0

인데 입력 태그의 disabled 속성을 사용하여 아이디어를 얻었습니다. 나는 이미 그것을 해결했다 –

+0

좋아, 너의 문제를 해결하게 해줘서 다행이다. – amenadiel

0

이 시도 :

var frm = $('#finalform').find(":input:not(:hidden)").serialize(); 

또는

var frm = $('#finalform :input:not(:hidden)').serialize(); 
+0

이 작동하지 않습니다. 대답이 작동하지 않지만 양식 데이터가 모두 –