|
|
|
| Есть форма ввода, в которой клиент вводит свой адрес:
<form id="pay" name="pay" method="post" action="https://pay.ru/merchant.php">
Ваш E-mail <input name="CLIENT_MAIL" type="text" value="" size="25" maxlength="120"/>
<input type="hidden" name="LMI_PAYMENT_DESC" value="Абонемент"/>
<input type="hidden" name="USER_VALUE1" value="Мое дополнение"/>
<input type="submit" value="Ввод"/>
</form>
|
Можно ли изменить её таким образом, чтобы введенный адрес дополнительно попал в переменную, в которую сейчас вводится "Мое дополнение"? | |
|
|
|
|
|
|
|
для: Владимир55
(07.06.2008 в 20:37)
| | Хм.. что-то не очень ясно....
вам надо что-то вроде этого?
<form id="pay" name="pay" method="post" action="https://pay.ru/merchant.php">
Ваш E-mail <input name="CLIENT_MAIL" type="text" value="" size="25" maxlength="120"/>
<input type="hidden" name="LMI_PAYMENT_DESC" value="Абонемент"/>
<input type="hidden" name="USER_VALUE1" value="Мое дополнение"/ onkeypress="newvar=this.value;">
<input type="submit" value="Ввод"/>
</form>
|
или меня "не в ту степь" понесло? =) | |
|
|
|
|
|
|
|
для: ddhvvn
(07.06.2008 в 20:46)
| | Мне нужно, чтобы после ввода введенный клиентом почтовый адрес оказался и в переменной CLIENT_MAIL, и в переменной USER_VALUE1.
А фраза "Мое дополнение" мне больше не нужна. | |
|
|
|
|
|
|
|
для: Владимир55
(07.06.2008 в 21:01)
| | Хм.. тогда так
<form id="pay" name="pay" method="post" action="https://pay.ru/merchant.php">
Ваш E-mail <input name="CLIENT_MAIL" type="text" value="" size="25" maxlength="120" onkeypress="document.getElementByName('USER_VALUE1').value=this.value"/>
<input type="hidden" name="LMI_PAYMENT_DESC" value="Абонемент"/>
<input type="hidden" name="USER_VALUE1" value="Мое дополнение"/ >
<input type="submit" value="Ввод"/>
</form>
|
| |
|
|
|
|
|
|
|
для: ddhvvn
(07.06.2008 в 21:36)
| | Наверное, можно как-то упростить дело, если сформулировать задачу таким образом.
Есть форма ввода:
<form id="pay" name="pay" method="post" action="https://pay.ru/merchant.php">
Ваш E-mail <input name="CLIENT_MAIL" type="text" value="" size="25" maxlength="120"/>
<input type="hidden" name="LMI_PAYMENT_DESC" value="Абонемент"/>
<input type="submit" value="Ввод"/>
</form>
|
Как дополнить эту форму, чтобы информация, вводимая в переменную CLIENT_MAIL, одновременно вводилась бы и в переменную USER_VALUE1 ? | |
|
|
|
|
|
|
|
для: Владимир55
(07.06.2008 в 21:59)
| | А чем мой вариант не подходит?
p.S.: там небольшая очепяточка... слеш стоит не там ))) | |
|
|
|
|
|
|
|
для: ddhvvn
(07.06.2008 в 23:36)
| | Я подумал, что вероятно, код можно упростить. За счет того, что по сути не нужна строка
<input type="hidden" name="USER_VALUE1" value="Мое дополнение"/ >
|
Не нужна в том смысле, что передавать value="Мое дополнение" нет нужды, ибо это я привел для примера, а из окончательной редакции формы его следует удалить.
Может быть, тогда упростится конструкция
Ваш E-mail <input name="CLIENT_MAIL" type="text" value="" size="25" maxlength="120"/ onkeypress="document.getElementByName('USER_VALUE1').value=this.value">
|
Возможно здесь что-то улучшить? | |
|
|
|
|
|
|
|
для: Владимир55
(08.06.2008 в 00:14)
| | По просту говоря, если посетитель вводит адрес abc@mail.ru, то чтобы из формы в обработчик вышли переменные
"CLIENT_MAIL" = abc@mail.ru
"USER_VALUE1" = abc@mail.ru | |
|
|
|
|
|
|
|
для: Владимир55
(08.06.2008 в 01:01)
| | Но Вам же эти переменные нужно будет передать в PHP скрипт? Если да, то я привел нормальный вариант скрипта! | |
|
|
|
|
|
|
|
для: ddhvvn
(08.06.2008 в 10:23)
| | Если бы для предачи в МОЙ РНР скрипт, то я бы там с ними и разобрался! А они уходят на сайт платежного сервиса. Вот потому и приходится исхитряться...
Можно что-нибудь придумать? | |
|
|
|
|
|
|
|
для: Владимир55
(08.06.2008 в 10:46)
| | Тогда все нормально!
Оставляйте так!
P.S.: я работал с WM и E-GOLD, но что-то не помню, зачем передавать емайл 2 раза? =)) | |
|
|
|
|
|
|
|
для: ddhvvn
(08.06.2008 в 11:57)
| | Я подключаю сайт к платёжной системе. И при этом возникла проблема, для решения которой я и создал эту тему. Мне нужно дублировать почту (и некоторые другие переменные, которые я продублирую по аналогии", поскольку скрипт обработки платежа не передаёт их на сайт, и у меня нет возможности послать покупателю уведомление о платеже.
Так что если есть возможность продублировать переменные, то я хотел бы её использовать. | |
|
|
|
|
|
|
|
для: Владимир55
(08.06.2008 в 16:57)
| | Владимир55, любую задачу следует ЧЁТКО сформулировать.
Как только вы это сделаете, вам помогут - без лишних слов и пятнадцати сообщений, в которых народ пытается выяснить - "а что же все-таки вам нужно?".
Предположу (именно, что предположу - что, как понимаете, неправильно - задачу надо РЕШАТЬ, а не самому выдумывать ее условия), что задача ваша заключается в следующем:
Создать некую HTML-форму, в которой пользователю будет предложено заполнить одно (два, три...) различных поля и нажать кнопку "Отправить данные". При нажатии кнопки необходимо сформировать какой-то конкретный поток передаваемых данных, где количество и последовательность пар "имя=значения" четко определены и фактически не соответствуют полям, кои заполняет юзер.
В общем виде задача решается так:
1. Создается некая форма, в которой имеются ВИДИМЫЕ (type="text") поля, которые заполняет пользователь и набор НЕВИДИМЫХ полей (type="hidden"), которые фактически формируют поток отправляемых данных.
2. ВИДИМЫЕ поля (type="text") могут участвовать, а могут и не участвовать в потоке отправляемых данных при сабмите. Чтобы значения этих ВИДИМЫХ полей НЕ УЧАСТВОВАЛИ в сабмите, этим полям НЕ СЛЕДУЕТ присваивать атрибут NAME, а вот полям, кои формируют поток, именно что СЛЕДУЕТ присвоить значения атрибутов NAME.
Пример в общем виде.
Положим, надо предложить клиенту заполнить ТРИ поля (имя, счёт, e-mail), а выходной поток сформировать в следующем виде:
CLIENT_MAIL=то,_что_введет_юзер_в_поле_e-mail &
USER_VALUE1=то,_что_введет_юзер_в_поле_e-mail &
USER_VALUE2=то,_что_введет_юзер_в_поле_имя &
USER_VALUE3=то,_что_введет_юзер_в_поле_счёт &
USER_VALUE456=Yahoo!
|
Тогда код будет таким:
<form name="myForm">
<!-- ВИДИМЫЕ поля, заполняемые пользователем и ВИДИМАЯ же кнопка "Отправить" -->
Введите своё имя: <input type="text" id="field_name"><br>
Введите номер счёта: <input type="text" id="field_number"><br>
Введите e-mail: <input type="text" id="field_mail"><br>
<input type="submit" value="Отправить" onclick="myFunc ()">
<!-- НЕВИДИМЫЕ поля, заполняемые функцией, включаемой по нажатию кнопки "Отправить" -->
<!-- Порядок следования полей и значения их атрибутов NAME соответствуют желаемому -->
<input type="hidden" name="CLIENT_MAIL">
<input type="hidden" name="USER_VALUE1">
<input type="hidden" name="USER_VALUE2">
<input type="hidden" name="USER_VALUE3">
<input type="hidden" name="USER_VALUE456" value="Yahoo!">
</form>
<script>
function myFunc ()
{
document.forms.myForm.CLIENT_MAIL.value = document.getElementById ('field_mail').value;
document.forms.myForm.USER_VALUE1.value = document.getElementById ('field_mail').value;
document.forms.myForm.USER_VALUE2.value = document.getElementById ('field_name').value;
document.forms.myForm.USER_VALUE3.value = document.getElementById ('field_number').value;
}
</script>
|
Вот и всё.
Те поля, кои ВИДНЫ юзеру, не имеют атрибута NAME и, следовательно, не участвуют в формировании выходного потока данных при сабмите формы.
А вот все НЕВИДИМЫЕ поля, имеющие атрибут NAME, будут перед сабмитом заполнены нужными значениями и сформируют нужный выходной поток.
Правильность работы можно проверить, используя этот код AS IS, т.е. не прописывая вовсе атрибуты METHOD и ACTION в теге <form>: заполните предлагаемые поля и нажмите "Отправить" - в адресной строке браузера увидите после символа ? как раз НУЖНЫЙ вам поток вывода.
Разумеется, после прописывания METHOD и ACTION код будет работать ТОЧНО ТАК ЖЕ по сути своей.
ПРИМЕЧАНИЕ: Данный код полностью работоспособен только в том случае, если ВИДИМЫХ полей будет БОЛЬШЕ ОДНОГО (в противном случае, если будет всего ОДНО текстовое поле, то сабмит формы может происходить и после нажатия кнопки ENTER - так называемый "автосабмит"). Если видимое поле нужно будет только одно, то имеется, как минимум, два простейших решения (оба - препятствуют "автосабмиту"):
а) поменять тип нажимаемой кнопки на type="button" и в конец функции myFunc () добавить строку document.forms.myForm.submit ();
б) добавить второе текстовое поле (БЕЗ атрибута NAME, без ID. но со стилем style="display: none" - оно вовсе не будет участвовать в работе скрипта, но будет препятствовать автосабмиту формы.
Разумеется, есть и ещё много других способов :-) | |
|
|
|
|
|
|
|
для: PAT
(08.06.2008 в 20:18)
| | Спасибо, очень хорошее объяснение!
Теперь всё получилось. | |
|
|
|