сохранить параметры и добавить еще один из формы - PullRequest
2 голосов
/ 30 марта 2010

У меня есть следующие 3 URL:

http://www.test.com?a=1
http://www.test.com?a=1&b=3
http://www.test.com?a=1&b=2&c=99

Теперь в форме у меня есть выпадающее меню, например:

<select name="b">
    <option value="1">1</option>
     ...
</select>

Теперь я хочу либо добавить этот параметр в список существующих параметров, либо отредактировать параметр, если он уже есть, а затем обновить страницу. Есть идеи? Спасибо

Ответы [ 4 ]

1 голос
/ 03 апреля 2010

Я не уверен, используете ли вы PHP или javascript для этой проблемы, так как вы пометили вопрос обоими.

В PHP другие ваши параметры исчезнут при отправке формы, если вы не включите в форму и старые параметры, например, для вас:

<select name="b">
    <option value="1">1</option>
    ...
</select>
<input type="hidden" name="a" value="<?php echo htmlentities(@$_GET['a']); ?>" />
<input type="hidden" name="c" value="<?php echo htmlentities(@$_GET['c']); ?>" />

Однако, если вы используете Javascript, как и другие парни упоминали, вам придется анализировать строку запроса, но, по сути, делать то же самое: добавить другие параметры в ваше местоположение.

1 голос
/ 30 марта 2010

Вы можете сделать это способом регулярного выражения:

var myNewValue = 1; // the new value of input named b
var url = window.location.href;
if(url.match(/\Wb=/)) url = url.replace(/(\Wb=)[^&]*/, "$1"+myNewValue);
else url = url+"&b="+myNewValue;
window.location.href = url;
0 голосов
/ 11 апреля 2010

" Теперь я хочу добавить этот параметр в список существующих параметров или отредактировать его, если он уже есть "

Я бы пошел с parse_str () / parse_url () работает для разделения URL на ассоциативный массив, затем вы можете добавить / обновить элемент массива с вашим новым значением и объединить его обратно в действительный URL с помощью http_build_url ().Пожалуйста, взгляните на примеры в руководстве по php, проще написать код, чем написать об этом;)


", затем обновить страницу "

ответы о скрытых элементах формы неплохие, но мне интересно, поймет ли пользователь, что происходит (у него не будет видимого подтверждения того, что его предыдущий выбор запомнен, но вы каким-то образом его сохраните).Из-за этого я бы пошел по другому пути: предполагая, что формы генерируются с помощью php и не являются статическим HTML, почему бы вам просто не убедиться, что параметры, выбранные в первой отправке формы, выделены при отображении формы дляпоследующие представления?

<select name="b">
    <option value="1" <?php if(isset($params['b']) && $params['b'] == 1) echo 'selected="selected"'; ?>>1</option>
</select>

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

Для тегов параметров правильный атрибут «выбран», для флажков / переключателей он «отмечен», текстовые входы имеют атрибут «значение», в который можно вводить все, что вы хотитеи т.д. Не уверен, что я не говорю о чем-то очевидном для вас ...

0 голосов
/ 30 марта 2010

Вы должны написать параметры, которые вы хотите сохранить как скрытые входные данные в новой форме Мой PHP ржавый, но здесь идет:

<input type="hidden" name="a" value="<?php echo (int)$_GET['a']; ?>" />

JavaScript не имеет прямого доступа к параметрам запроса для страницы, если вы не используете regex для анализа списка параметров. Тем не менее, технология на стороне сервера, в вашем случае PHP, имеет доступ при создании страницы.

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

...