как захватить переменные в window.location.search при отправке формы? - PullRequest
0 голосов
/ 05 июня 2011

Хорошо, у меня есть форма, и вот что я хочу с ней сделать:

После отправки (при условии успешной отправки):

  • Захват значения определенного поля ввода 'x' в форме в переменную 'xval'
  • Добавить значение переменной 'xval' к URL
  • И перейти на определенную страницу ...

Видите, у меня есть несколько страниц, которые имеют условное содержание, в зависимости от переменных, которые я передаю через URL ... Таким образом, адрес на шаге 1 выглядит следующим образом:

whatever.com/products.html?home?try

На шаге 2, который является формой, он выглядит следующим образом "

whatever.com/products.html?home?try?5?john@gmail.com

Шаг 3, предполагается прочитать URL и, соответственно, показать информацию.

Повторюсь, я не знаю, как перехватить переменные и добавить их в URL, когда пользователь предположительно завершит шаг 2 ...

Я попробовал функцию на кнопке отправки, которая вызывает запуск навигации без подтверждения отправки ... Я попробовал обработчик события "onsubmit" на самом теге формы, и он, похоже, не работал ...

Идеи? Предложения?

Ответы [ 2 ]

1 голос
/ 05 июня 2011

Я бы сказал: придерживайтесь общепринятого способа определения полей формы в строке GET (?this=that&foo=bar).Это был бы способ загрузить вашу страницу с новыми параметрами:

var locationstr = location.href.split('?')[0], //URL without params
    try = document.getElementById('try_inputfield').value,
    email = document.getElementById('email_inputfield').value,
    newLocation = [locationStr,
                   '?home=1',
                    '&try=',
                     try,
                    '&email=',
                     email].join('');         // glue new parameters
location.replace(newLocation);                // replace location

, если вы хотите прочитать и использовать свойства, определенные для location.search, это расширение строки для преобразования строки запроса в объект:

String.prototype.q2obj = function(){
    var qArr = this.split('&')
        ,qObj = {}
        ,i =-1;
    while(++i<qArr.length) {
            qfrag = qArr[i].split('=');
            qObj[qfrag[0]] = qfrag[1];
   }
   return qObj;
};
//usage
var queryObj = location.search.substr(1).q2obj();
0 голосов
/ 05 июня 2011

Убедитесь, что вы установили атрибут name в ваших компонентах ввода.Если вы используете простую форму представления что-то вроде этого, следует добавить значения в URL.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Untitled Document</title>
    </head>
    <body>
        <form>
            <input id="txt-name" name="name"/>
            <button type="submit">Submit</button>
        </form>
    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...