2012-03-21 4 views
3

Я пытаюсь сохранить список значений из раскрывающегося списка при нажатии кнопки браузера после отправки формы. Я пробовал использовать bbq jquery Ben Alman, но не смог заставить все работать. Here's что я пытался. Пожалуйста помоги.Задняя кнопка браузера при выборе списка значений

Большое спасибо заранее.

HTML

<form action="something.py" id="formName"> 
    <table id = "tabName"> 
     <tr> 
      <th>Name</th><th>Number</th> 
     </tr> 
     <tr> 
      <td> 
       <select id="myname" name="myname"> 
        <option value="a">a</option> 
        <option value="b">b</option> 
        <option value="c">c</option> 
       </select> 
      </td> 
      <td> 
       <select id="mynumber" name="mynumber"> 
        <option value="1">1</option> 
        <option value="2">2</option> 
        <option value="3">3</option> 
       </select> 
      </td> 
     </tr> 
    </table> 
    <input type="submit" value="submit" /> 
</form> 

JQuery:

var selected_value = []; 
$('#mynumber').change(function() { 
    var name = $('#myname').val(); 
    var number = $('#mynumber').val(); 

    $("#tabName tr:last").before("<tr><td>" + name + "</td><td>" + number + "</td></tr>"); 
    selected_value.push(name); 
}); 

$('#formName').submit(function() { 
    $.bbq.pushState({ 
     values: selected_value 
    }); 
    //return false; 
}); 

$(window).bind("hashchange", function(e) { 
    var values = $.bbq.getState("url"); 
    if (selected_value === values) { 
     $(this).addClass("current"); 
    } else { 
     $(this).removeClass("current"); 
    } 
}); 
+1

Поместите свой код здесь, пожалуйста, а не просто ссылку на jsfiddle – musefan

+0

Вы пробовали какие-либо куки/localStorage? – hamczu

+0

@DGT Вы не можете просто отправить эти значения с сервера на обновление страницы? –

ответ

4

Мое решение (без печенья или LocalStorage) на основе location.hash:

function addRow(name, number){ 
    $("#tabName tr:last").before("<tr><td>" + name + "</td><td>" + number + "</td></tr>"); 
} 

$(function(){ 
    if(location.hash){ 
     var rows = location.hash.substr(1).split(';'); 
     for(var i = 0; i < rows.length; i++){ 
      var row = rows[i].split(','); 
      if(row.length == 2){ 
       addRow(row[0], row[1]); 
      } 
     } 
    } 

    $('#mynumber').change(function() { 
     var name = $('#myname').val(); 
     var number = $('#mynumber').val(); 
     location.hash = location.hash + (location.hash ? ';' : '') + name + ',' + number; 
     addRow(name, number); 
    }); 
}); 

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

+0

Удивительный! Большое спасибо. Извините, я не мог вернуться к вам раньше. – DGT

+0

Извините, забыли нажать значок баунти. – DGT

+0

оо отлично! спасибо;) – hamczu

0
$('#formName').submit(function() { 
    $.bbq.pushState({ 
     values: selected_value 
    }); 
    //return false; 
}); 

должен быть

$('#formName').submit(function() { 
    $.bbq.pushState({ 
     values: selected_value 
    }); 
    //return false; 
}); 

и

var values = $.bbq.getState("url"); 

должен быть

var values = $.bbq.getState("values"); 
+2

объявление. 1 объект JS бесшумно преобразует все ключи в строку, поэтому вы не ставите «всюду», – hamczu

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