2010-12-13 2 views
1

я использую следующую функцию JQuery, чтобы выполнить slideDown на DIV, на основе стоимости SELECT, выпадающего меню:JQuery ВЫБРАТЬ изменить триггер

$(function() 
{ 
    $('#show-options').change(function(){ 
     if($(this).val() != '') 
     { 
      $('#' + $(this).val()).slideDown(); 
     } 
    }); 
}); 

HTML:

<select id="show-options"> 
    <option value="">Select an Option</option> 
    <option value="vehicle-type">Vehicle Type</option> 
    <option value="vehicle-colour">Vehicle Colour</option> 
</select> 

<div id="vehicle-type" style="display: none;"> 
    <!--form elements in here--> 
</div> 

<div id="vehicle-colour" style="display: none;"> 
    <!--form elements in here--> 
</div> 

Теперь, когда форма , любые DIV, которые были отображены перед представлением, должны отображаться автоматически. Я могу проверить переменные GET на моем PHP, но мне нужен код jQuery, который будет имитировать функцию «change». Я думаю, что это имеет какое-то отношение к триггерам или связям.

ответ

4

Я делаю это на самом деле. Самый простой способ я нашел, чтобы просто вызвать событие после связывания его следующим образом:

function showByVal(val) { 
    $('#' + val).slideDown(); 
} 

$(function() 
{ 
    $('#show-options').change(function(){ 
     if($(this).val() != '') 
     { 
      showByVal($(this).val()); 
     } 
    }); 

    showByVal('<? echo $_GET["PreviousVal"]; ?>'); 
}); 

Пока значение устанавливается заранее (ваш PHP код), то событие будет срабатывать после привязывает и настройте начальный дисплей.

+0

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

+0

@tvanfosson - Это правда, похоже, что он не переключается, но из вопроса не на 100% ясно, возвращается ли OP обратно на ту же страницу или в другую. Если он отправляется на ту же страницу и нуждается в согласовании отображения после публикации/обновления, то код PHP может установить один из тегов '

+0

Это для формы поиска с использованием GET. Он отправляется на ту же страницу. Существует вероятность того, что необходимо отобразить несколько DIV, но это не проблема, так как я могу проверить переменные GET в моем PHP-коде. – GSTAR

0

Если вы делаете это в ответ на подачу формы, почему бы просто не показать DIV (т. Е. Не сделать стиль «display: none;») при рендеринге страницы для тех вещей, которые были отображены. Вам нужно будет либо отслеживать, используя скрытые поля, либо один из них, либо показывать только те разделы, которые были отображены, и элемент в выбранном разделе. В любом случае вы можете использовать входы, которые вы получаете из формы, чтобы определить, какие разделы имеют установленную по умолчанию видимость, которая будет отображаться.

0

Всякий раз, когда мне нужно делать что-то подобное, я сделаю $('#ele').trigger('change'), поэтому не нужно делать ничего особенного, поэтому при загрузке страницы он просто запускает событие изменения в списке выбора и до тех пор, пока правильное значение будет установлено после загрузка страницы вызывает ваш уже определенный обработчик изменений.

1

попробовать это:

$("#" + $("#show-options :selected").val()).slideDown(); 

, конечно, вы будете писать в PHP выбранный атрибут в правой опции

Смежные вопросы