2012-06-18 1 views
1

Im에 다음 번에 내 아약스 양식을 제출할 때 라디오의 값에 대해 빈 값을 얻는 중 문제가 발생합니다.후속 양식을 제출할 때 라디오의 Jquery 빈 값

순차적으로이 일어나는 것이다 :

  1. 사용자는
  2. 가 선택한 라디오 var enable = $('input[name=enable]:checked').attr('value');
  3. 포스트

AJAX data: { 'enable' : enable, },를 통해 값의 값을 가져옵니다 라디오를 선택하고 제출 형태로 그 모두 잘 작동합니다. 그러나 사용자가 양식을 다시 제출하면 라디오의 값은 비어 있으며 아무 것도 제출되지 않습니다.

저는 '표준'라디오를 숨기고 스타일이 적용된 버전으로 바꾸기 위해 스타일과 Jquery를 사용하고 있습니다. 스타일을 끄면 라디오가 올바르게 선택되었음을 알 수 있지만 값은 제출되지 않습니다.

필요한 경우 더 많은 코드를 게시 할 수 있습니다. 감사.

<form method="post" id="add-form" class="form" onsubmit="return false;"> 
<label>Enable Location</label> 
<input type="radio" name="location_enable" id="location_enable" value="enable" checked="checked" /> 
<input type="radio" name="location_enable" id="location_disable" value="disable" /> 
<button>Submit</button> 
</form> 

검증 형태

 <script type="text/javascript"> 
     $().ready(function() { 
      $("#add-form").validate({ 
       rules: { 
        location_enable: { required: true } 
       }, 
       success: function(span) { 
        span.html(" ").addClass("checked"); 
       }, 
       submitHandler: function(form) { 
        $('#add-form').submitForm(); 
       } 
      }); 
     }); 
     </script> 

게시 데이터를 사용자가 선택한이 '사용'AJAX 게시 스크립트의 값으로 '사용'할 경우 첫 번째 제출에

  <script type="text/javascript"> 
      $(document).ready(function() { 
       $.fn.submitForm = function() { 
        var location_enable = $('input[name=location_enable]:checked').attr('value'); 

        $.ajax({ 
         type: 'POST', 
         data: { 'location_enable' : location_enable }, 
         url: 'script.php', 
         dataType: 'json', 
         success: function($data) { 
          var result = $data.result; 
          var msg = $data.msg; 

          if (result == "success") { 
           formMessageDisplay(msg, result); 
           $(':input', '#add-form').each(function() { 
            // Set the values to empty 
            $(':input').val(''); 
           }); 
          } 
          else { 
           formMessageDisplay(msg, result); 
          } 
         }, 
         error: function($data) { 
          formMessageDisplay('<?php echo AJAX_ERROR; ?>', result); 
         } 
        }) 
       } 
      }); 
     </script> 

. php. 사용자가 양식을 다시 제출하면 페이지를 다시로드하지 않고 AJAX가 '사용'을 선택하더라도 빈 값을 게시합니다.

죄송합니다. 이전에는 jsFiddle을 사용하지 않았습니다.

방화 광 지역 내에서 이것은 페이지를 다시로드하지 않고 두 번의 제출 결과입니다.

json_action addEloc 
location_address Test 
location_desc Test 
location_enable enable 
location_loc Test 
location_map enable 
location_name Testing radio 
location_postcode Test 
location_state QLD 

라디오 필드에서 '활성화'두 가지에 유의하십시오.

둘째 제출 :

json_action addEloc 
location_address Test 
location_desc Test 
location_enable 
location_loc Test 
location_map  
location_name Testing radio 
location_postcode Test 
location_state QLD 

두 번째 제출에있는 두 개의 라디오에 대한 값이 없었다.

enter image description here

enter image description here

+1

필요한 데이터로 피들 (http://jsfiddle.net)을 만드십시오. – diEcho

+0

** 사용자가 양식을 다시 제출하십시오 ** means ?? 페이지 새로 고침 후? – diEcho

+0

양식이 ajax 스크립트에 게시되어 페이지 새로 고침이 없습니다. –

답변

2

이 문제는 당신은 모든 입력 형식 요소에 ''설정하는

if (result == "success") { 
       formMessageDisplay(msg, result); 
       $(':input', '#add-form').each(function() { 
        // Set the values to empty 
        $(':input').val(''); 
       }); 
} 

$(':input').val(''); 

왜 라디오의 인해 당신이 스크립트에 발생 버튼 값도 ''로 설정됩니다. 페이지를 새로 고칠 때까지 지금 돌아 오는 동안 빈 응답을 반환합니다.

이 대신에 reset() 함수를 사용하여 양식 값을 재설정 할 수 있습니다.

$('#add-form').reset(); 
+0

도움에 감사드립니다. ** document.getElementById ("add-form"). reset(); **을 사용해야했다. –

관련 문제