2010-10-28 2 views
0

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

Im работает в XSLT, поэтому я не могу использовать PHP. Есть ли функция Javascript для этого? или возможно плагин/функция jQuery?

Благодаря

моей формы:

<form name="sort-form" action="{$root}/resorts/" method="get"> 
    <select name="filter" onChange="document.getElementById('sort-form').submit();"> 
     <option value="">Sort By...</option> 
     <option value="recommended">Recommended</option> 
     <option value="location">Location</option> 
     <option value="prices-from">Low budget</option> 
     <option value="prices-till">High budget</option> 
    </select> 
</form> 

ответ

1

У вас есть два варианта:

  1. Отправить форму с помощью AJAX.
  2. Сохраните состояние в Cookies.

Я рекомендую использовать AJAX, поскольку он делает интерфейсы более интерактивными и экономит интернет-трафик. Чтобы отправить форму, вы можете использовать JQuery .post() метод:

<script type="text/javascript"> 
    $(document).ready(function(){ 
    $("#sort-form").submit(function(){ 
     $.post("/your/url.php", 
      $("#sort-form").serialize(), 
      function(data){ 
       // optional callback 
      } 
     ); 
    }); 
    }); 

Если это не вариант (например, страница должна быть перезагружена в любом случае), вы должны установить Cookies, а затем, после перезагрузки, проверьте их снова. Пример (с использованием функций от here):

// on submit 
setCookie("select_value", document.getElementById('yourSelectId').value); 
.... 
// on load 
var sortSelect = document.getElementById('yourSelectId'); 
var val = getCookie("select_value"); 
for(index = 0; index < sortSelect.length; index++) { 
if(sortSelect[index].value == val) 
    sortSelect.selectedIndex = index; 
} 
+0

Путь ajax не сработал для меня. Мне нужно перезагрузить страницу в любом случае после отправки, поэтому я попробовал параметр cookie, но я не могу понять, как настроить его для моей формы. Можете ли вы привести пример, который соответствует моей форме? – Sandor

+0

Я не могу написать точный код для вашей формы, не видя частей PHP и XSLT. Мой совет - проверить каждую часть вашего скрипта шаг за шагом. Сделайте это как можно проще, а затем добавьте необходимую сложность. – ffriend

+0

Я заметил некоторые ошибки в вашем коде только сейчас. Сначала вы переходите к имени формы функции getElementById() ', а не к идентификатору формы. И, во-вторых, я думаю, вам нужен метод 'POST', а не' get' в декларации формы. Я не уверен, что это причина ошибки, но эти модификации не нарушают ваш код. – ffriend

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