2013-09-04 5 views
-1

У меня есть форма с выпадающим меню выбора, которое вызывает функцию javascript, которая перезагружает страницу параметрами в виде строки запроса. Я хочу, чтобы при выборе страницы была выбрана опция выпадающего списка. Как мне это сделать?как сохранить ту же форму после window.location.replace

Выбор формы:

<select name="fill_position" id="fill_position" onchange="reloadShowForm()">

JS:

function reloadShowForm() { 
    var fill_pos = $('#fill_position').val(); 
    window.location.replace(window.location.href + "&fill_position=" + fill_pos); 
} 

ответ

1

Сначала необходимо проанализировать параметры GET.

Вот функция от radicand представлена ​​в этом post:

function getURLParameter(name) { 
    return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null; 
} 

Добавьте его в свой код, а затем использовать этот фрагмент кода:

var fillPosition = getURLParameter("fill_position"); 
if (fillPosition !== null) { 
    $("#fill_position").val(getURLParameter("fill_position")); 
} 
+0

Сэр, ты мужчина. Благодаря! –

1

Одним из решений является для чтения параметр запроса из URL, который вы передаете window.location.href + "&fill_position=" + fill_pos. то есть fill_position, а затем обрабатывать результат процесса.

function getUrlVars() { 
    var vars = {}; 
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { 
     vars[key] = value; 
    }); 
    return vars; 
} 


var fillPosition = getUrlVars()["fill_position"]; 
if (fillPosition !== null) { 
    $("#fill_position").val(fillPosition); 
} 
+0

Это должно быть 'getUrlVars() [" fill_position "]', не так ли? – ComFreek

+0

Да его опечатка .. мой плохой .. обновил спасибо. :) – Unknown

0

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

Вопрос: зачем загружать страницу? Не проще ли использовать jquery или подобное для выполнения вызовов ajax для публикации выбранного вами значения и динамической вставки полученного последующего контента?

Мнение: Это даст вам возможность использовать некоторые переходы, очистит адресную строку URL-адреса и улучшит пользовательский интерфейс (например, отсутствие обновления страницы/обновления экрана).

+0

Мне действительно очень хотелось бы, но я действительно строил приложение для рельсов, и я подумал, что это единственный способ передать данные рубину. Во всяком случае, я поддержал ComFreek для ya. Cheers –

+0

Спасибо. Получайте удовольствие от Ruby. У меня есть только опыт работы на уровне стажеров, но я полагаю, что вы должны иметь возможность построить контроллер для приема вызовов ajax - должно быть довольно простым, но может не работать для вашего приложения в зависимости от ваших временных ограничений, соображений безопасности и общего комфорта с шаблоном MVC развитие. Идеи, которые стоит узнать, если у вас есть время, так как они сэкономит вам много по дороге. –

+0

@JECarterII Добро пожаловать в StackOverflow :) Я согласен с тем, что ваши предложения обеспечат лучший пользовательский интерфейс для пользователя. Использование хэш-тегов было бы еще лучше, потому что они обеспечивали бы возможность закладки URI. – ComFreek