2009-11-20 91 views
1

我有一個PHP頁面,目前在頁面上的列中有4年的團隊職位。客戶想要選擇位置上的球員並有第一,第二和第三選擇。目前該頁面顯示4列,每個位置都有一套組合。每個組合都有一套完整的球員,用戶從組合中選擇他想要的球員。提交時,玩家位置存儲在數據庫中。 然而,客戶現在想要改變頁面,以便當他在一年中選擇一名球員並定位時,該球員將從組合中移除,並且不能再選擇該年份。我使用了一點AJAX,但想知道是否有人有任何想法/建議。該頁面目前很慢,所以他們也希望它加速。PHP組合框AJAX刷新

頁面佈局是目前這樣的

POISTION    YEAR1   YEAR2  YEAR3   YEAR4 
1     COMBOC1   COMBOC1  COMBOC1  COMBOC1 
        COMBOC2   COMBOC2  COMBOC2  COMBOC2 
        COMBOC3   COMBOC3  COMBOC3  COMBOC3 

2 same as above 

COMBOC1,2和3的所有當前具有相同的球員 - 當選擇一個球員需要爲它下面的所有連擊被刪除。我想通過改變頁面設計,並具有文本框的球員和一個單人遊戲開始的每年下選擇這樣的:

POISTION    YEAR1       YEAR2   YEAR3   YEAR4 
1     <PLAYER><POSITION><CHOICE> ... 

        [TEXT BOX CHOICE1] 
        [TEXT BOX CHOICE2] 
        [TEXT BOX CHOICE3] 

2 ... 

然後我只有1個組合框每年可擔心的 - 我但是也有刷新組合框和移除已被選中的播放器的問題,並且我寧願在提交頁面的情況下執行該操作。

很抱歉的長期張貼 - 歡呼

回答

0

如果我理解正確你的問題,你想要做的就是刪除取決於什麼是在往年選擇框選擇以後的選擇框的選項是什麼。你不應該提交任何表單來做到這一點 - 你應該能夠純粹用JavaScript來做到這一點。此代碼應幫助您開始:

 

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".year").change(function() { 
      var name = $(this).attr("name"); 
      var checkYearNum = name.substr(4); 
      var value = $(this).val(); 
      var removeFromLaterYears = function (index) { 
       var yearNum = $(this).attr("name").substr(4); 
       if (yearNum > checkYearNum) { 
        var selector = "[value='" + value[0] + "']"; 
        $(this).children(selector).remove(); 
       } 
      } 
      $(".year").each(removeFromLaterYears); 
     }); 
    }); 
</script> 
</head> 
<body> 
<form> 
<fieldset> 
<select class="year" name="year1"> 
    <option value="">Select...</option> 
    <option value="player1">Player 1</option> 
    <option value="player2">Player 2</option> 
    <option value="player3">Player 3</option> 
</select> 

<select class="year" name="year2"> 
    <option value="">Select...</option> 
    <option value="player1">Player 1</option> 
    <option value="player2">Player 2</option> 
    <option value="player3">Player 3</option> 
</select> 

<select class="year" name="year3"> 
    <option value="">Select...</option> 
    <option value="player1">Player 1</option> 
    <option value="player2">Player 2</option> 
    <option value="player3">Player 3</option> 
</select> 
</fieldset> 
</form> 
</body> 
</html> 
 

基本上,這一切正在做的是使用jQuery設置一個事件,當選擇框的變化之一,刪除與任何以下選擇框的值相同的選擇其年份編號(在每個選擇框的「名稱」屬性中定義)大於已更改的選擇框的年份編號。

除此之外,您需要跟蹤哪些選擇已從選擇框中刪除,以便在未選中播放器時可以重新添加選項。

由於您也在討論組合框,所以我假設除了選擇框之外您還有一個文本輸入框,但您可以使用與此相同的原則。

如果你不熟悉JQuery,你可能想了解它 - 它使這樣的事情變得更容易。這將是一個很好的開始:http://docs.jquery.com/How_jQuery_Works。希望這可以幫助。

+0

Cheers Steven 爲了加快頁面繪製速度,我已經放下了一個與文本框略有不同的軌道。但是你的查詢仍然有效,我想從組合中刪除值並提供一個非常好的起點。 乾杯 Steve – bhs 2009-11-20 17:40:19

+0

很酷,我很高興能幫上忙。 – 2009-11-20 22:54:24