jQuery куки настройки выберите раскрывающееся значение после обновления страницы - PullRequest
3 голосов
/ 01 марта 2010

Честно говоря, мой мозг довольно жарен после того, как я сегодня прошел так далеко.

Я пытаюсь сохранить состояние нескольких выпадающих списков на странице с помощью этого плагина:

http://plugins.jquery.com/project/cookies

Я использую этот jQuery для установки файлов cookie для разных выпадающих заголовков на основе их идентификатора:

$(document).ready(function() {

// hide 'Other' inputs to start
$('.jOther').hide();

// event listener on all select drop downs with class of jTitle 
$(".jTitle").change(function(){

    //set the select value
    var val = $(this).val();

    if(val != "Other") {
        //$(this).nextAll('.jOther').hide();
        $(this).parent().find(".jOther").hide();
    } else {
        //$(this).nextAll('.jOther').show();
        $(this).parent().find(".jOther").show();
    }

    // Sets a cookie with named after the title field's ID attribute 
    $(this).cookify();

});

$(".jTitle").each(function(){

    // get the id of each Title select drop down
    var $titleId = $(this).attr('id');

    // get the value of the cookie for each cookie created above in $(this).cookify()
    var $cookieValue = $.cookies.get($titleId);

    // if value is 'Other' make sure it is shown on page refresh
    if ($cookieValue == 'Other') {

        // Show the other input
        $(this).parent().find(".jOther").show();

        // set select value to 'Other'
        $(this).val('Other');

    } else {

        // set to whatever is in the cookie
        $(this).val($cookieValue);

    }                       

}); 

}); * +1011 *

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

Пример HTML-кода, который я использую:

<td>
<select id="titleDepend1" class="inlineSpace jTitle">
    <option value="Please select">Please select...</option>
    <option value="Mr">Mr</option>
    <option value="Mrs">Mrs</option>
    <option value="Ms">Ms</option>
    <option value="Miss">Miss</option>
    <option value="Dr">Dr</option>
    <option value="Other">Other</option>
</select>
<label for="otherDepend1" class="inlineSpace jOther">Other</label>
<input type="text" class="text jOther" name="otherDepend1" id="otherDepend1" maxlength="6" />

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

1 Ответ

3 голосов
/ 02 марта 2010

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

$(".jTitle").each(function(){
  var $titleId = $(this).attr('id');
  var $cookieValue = $.cookies.get($titleId);
  if ($cookieValue == 'Other') {
    $(this).parent().find(".jOther").show();
    $(this).val('Other');
  } else if($cookieValue) {
    $(this).val($cookieValue);
  }                       
});

Единственное изменение заключается в добавлении проверки if в конце, посмотрите, есть ли cookie ... если не выбрана позиция по умолчанию 0 в раскрывающемся меню (по умолчанию в браузере).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...