2009-11-20 3 views
1

У меня есть страница PHP, которая в настоящее время имеет 4 года командных позиций в столбцах на странице. Клиент хочет выбрать игроков в позициях и иметь первый, второй и тихий выбор. В настоящее время на странице показаны 4 столбца с наборами комбо для каждой позиции. В каждом комбо есть полный набор игроков, и пользователь выбирает игрока, которого он хочет от комбо. При отправке позиции игрока хранятся в базе данных. Однако теперь клиент хочет изменить страницу, чтобы, когда он выбирает игрока в год и позицию, игрок удаляется из комбо и больше не может быть выбран для этого года. Я использовал немного AJAX, но мне было интересно, есть ли у кого-нибудь какие-либо мысли/предложения. Страница в настоящее время довольно медленная, поэтому они хотят, чтобы она ускорилась.PHP Combo Box 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 ... 

Тогда у меня есть только один выпадающий за каждый год, чтобы беспокоиться о том - I тем не менее, имеет ту же проблему обновления поля со списком и удаления игрока, который был выбран, и я предпочел бы сделать это, несмотря на отправку страницы.

Извините за длинную проводку - ура

ответ

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, чтобы установить событие, которое, когда один из изменений коробки отбора, снимает выделение с тем же значением из любых флажков выбора которые имеют номер года (определенный в атрибуте «name» каждого окна выбора), который больше, чем номер года в поле выбора, которое было изменено.

В дополнение к этому, вам необходимо будет отслеживать, какие из них были удалены, из которых были выбраны поля, чтобы они могли быть добавлены повторно, если игрок не выбран.

Поскольку вы также говорили о комбо-боксах, я предполагаю, что в дополнение к полям выбора есть поле ввода текста, но вы можете использовать тот же принцип с ними.

Если вы не знакомы с JQuery, вам может понадобиться узнать об этом - это упростит ситуацию. Это было бы неплохо для начала: http://docs.jquery.com/How_jQuery_Works. Надеюсь это поможет.

+0

Cheers Steven Теперь я немного изменил трек с текстовыми полями, чтобы ускорить рисование страницы. Но ваш запрос все равно будет работать, я думаю, чтобы удалить значения из комбо и обеспечить действительно хорошую отправную точку. Cheers Steve – bhs

+0

Круто, я рад, что смогу помочь. –