2011-08-20 5 views
2

선택 변경시 양식을 제출해야합니다. 내가 가진 형태가있어.선택 변경시 Ajax 양식 제출

<form id="form" name="form" method="post" action="modules/submit.php"> 
<select name='category' id='category' size='12' onChange='this.form.submit();'> 
<option value='1'>One</option> 
<option value='2'>Two</option> 
<option value='3'>Three</option> 
</select> 
<select name='subcategory' id='subcategory' size='12'> 
</select> 
</form> 

JS :

$(document).ready(function(){ 
    $('#form').submit(function() { 
     select(); 
     e.preventDefault(); 
    }); 

}); 


function select() 
{ 
    error(0); 

    $.ajax({ 
     type: "POST", 
     url: "modules/submit.php", 
     data: $('#form').serialize(), 
     dataType: "json", 
     success: function(msg){ 
      if(parseInt(msg.status)==1) 
      { 
       window.location=msg.txt; 
      } 
      else if(parseInt(msg.status)==0) 
      { 
       result(1,msg.txt); 
      } 
     } 
    }); 

} 

function result(act,txt) 
{ 
    if(txt) $('#subcategory').html(txt); 
} 

submit.php :

if(isset($_POST['category'])){ 
die(msg(0,"<option value='0'>Trololo</option>")); 
} 
function msg($status,$txt) 
{ 
    return '{"status":'.$status.',"txt":"'.$txt.'"}'; 
} 

제가 선택 양식 제출 및 파일 submit.php 리디렉션되고 변경

. 하위 카테고리 선택 결과를 가져와야합니다.

답변

4

이 시도 : 당신이 함수에 event 인수를 전달하지 않았기 때문에

$('#category').change(function() { 

    $('#form').submit(); 

}); 

또한, 코드는 양식 제출에 대한 기본 동작을 방지하기 위해 실패합니다.

$('#form').submit(function(e) { //Note the e!! 
    e.preventDefault(); 
    select(); 
}); 
+0

나는 이것을했고 아무 일도 일어나지 않았다. ('#category' '). (function() { \t \t $ ('# form '). \t \t $ ('# 양식')에 제출합니다. (함수() { \t \t 선택(); \t \t e.preventDefault를(); \t}); – Gugis

+0

@Gugis 내 편집보기 –

0

당신이 제출 핸들러에 인수로 e을 통과하지 있기 때문에 양식은 항상 제출 : 또한

$('#form').submit(function(e) { 
    e.preventDefault(); 
    select(); 
}); 

,이에 msg 기능을 변경합니다 :

function msg($status,$txt) 
{ 
    return array('status' => $status, 'text' => $text); 
} 

및 전화 :

if(isset($_POST['category'])){ 
    die(json_encode(msg(0,"<option value='0'>Trololo</option>"))); 
} 
+0

아무것도 바뀌지 않았습니다. 여전히 submit.php로 리디렉션됩니다. onChange = 'this.form.submit();'에 문제가있는 것 같습니다. 추신 제출 버튼을 클릭하여 제출 한 양식은 완벽합니다. – Gugis