2012-11-28 82 views
0

我主要是PHP編程,但由於我根本不知道Javascript或Ajax,所以陷入了Ajax問題。我現在有一個組合選擇菜單,如果第一個選擇是='train',我想隱藏第三個選擇菜單(方向)。我讀過一些瀏覽器不支持隱藏功能,因此,下一個最佳選擇是在假設第一個選項是列車時選擇第二個選項時禁用第三個選擇菜單。如果是公共汽車,那麼第三個選擇菜單應該仍然顯示。這裏是我的JavaScript現在,我敢肯定你可以想象它不工作。如何添加if語句到Ajax

$(document).ready(function(){ 
      if ($("select#agency").attr('value') == 'cta-train') { 
     $("select#direction").attr("disabled","disabled"); 
    } 

     $("select#route").attr("disabled","disabled"); 
     $("select#agency").change(function(){ 
     $("select#route").attr("disabled","disabled"); 
     $("select#route").html("<option>wait...</option>"); 
     var id = $("select#agency option:selected").attr('value'); 
     $.post("select_route.php", {id:id}, function(data){ 
      $("select#route").removeAttr("disabled"); 
      $("select#route").html(data); 
     }); 
    }); 
}); 


    $(document).ready(function(){ 
      if ($("select#agency").attr('value') == 'cta-train') { 
     $("select#direction").attr("disabled","disabled"); 
    } 
    else { 
     $("select#direction").attr("disabled","disabled"); 
     $("select#route").change(function(){ 
     $("select#direction").attr("disabled","disabled"); 
     $("select#direction").html("<option>wait...</option>"); 
     var id = $("select#route option:selected").attr('value'); 
     $.post("select_direction.php", {id:id}, function(data){ 
      $("select#direction").removeAttr("disabled"); 
      $("select#direction").html(data); 
     }); 
    }); 
    } 
}); 

任何幫助將不勝感激!

+0

所以,你想盡快使AJAX POST作爲文檔準備或應該所有這些活動確實是基於一些DOM事件觸發(選擇更改,按鈕點擊等)?另外jQuery''hide()在瀏覽器中也很好。我知道唯一的'hide()'問題是一箇舊的Safari bug,試圖對尚未附加到DOM的元素執行hide()。不知道這是否仍然是一個問題。 –

+0

謝謝邁克。自從我在數小時後纔開始工作以後,我不想過多地修改代碼。正如我所提到的,我不熟練使用任何類型的javascript/ajax語言,所以我只想添加一些簡單的幾行代碼,它們會根據第一個選擇的選項隱藏第三個選擇。如果您對如何做到這一點有任何想法,我會很感激。 – user1701252

回答

0

看起來像你不想要ajax,你想用javascript來隱藏一個選擇,如果另一個選擇有一個特定的元素。然後使用你的ajax來根據需要提交選擇。下面是一個例子http://jsfiddle.net/2FQwQ/

<select id='direction'> 
    <option value='train'>train</option> 
    <option value='car'>car</option> 
    <option value='pogo stick'>pogo stick</option> 
<select> 

<select id='agency'> 
    <option value='1'>1</option> 
    <option value='2'>2</option> 
    <option value='3'>3</option> 
<select> 

<select id='route'> 
    <option value='1'>1</option> 
    <option value='2'>2</option> 
    <option value='3'>3</option> 
<select> 

腳本

//SEts your html up to hide the secelt if train 
function amITrain() { 
    if ($('#direction').val() === "train"){ 
     $('#route').hide(); 
     $('#route').attr('disabled'); 
    }else{ 
     $('#route').show(); 
     $('#route').removeAttr('disabled'); 
    }   
} 
$('#direction').change(amITrain); 


//When you get the ajax back, you would fill the select like this, then call the function 
$('#direction').html("<option value='train'>train</option><option value='car'>car</option>  <option value='pogo stick'>pogo stick</option>"); 
amITrain(); 
+0

感謝您的輸入!我試了一下,試圖改變我的代碼,它似乎沒有工作。我不知道爲什麼它不起作用,但無論如何我無法讓它工作。 我的第一個選擇是代理,第二個是路線,第三個是方向,第四個是停止。 如果在機構中,他們選擇的是火車而不是公共汽車,那麼我希望第三個選擇(方向)消失。如果他們選擇公共汽車,那麼第三個應該留在那裏。所有選擇的字段都會被禁用,直到前一次更改。 我很抱歉我在Javascript中缺乏知識。我從來沒有真正處理過它 – user1701252