2011-08-20 12 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

試試這個:

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

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

}); 

此外,您的代碼將無法阻止該表單提交的默認操作,因爲你沒有通過event函數參數。

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

我這樣做並沒有任何反應:( '#category' ')改變(函數(){ \t \t $(' #形式「)提交(); \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