Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как продублировать переменную при вводе?
 
 автор: Владимир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="Мое дополнение"/>
<input type="submit" value="Ввод"/>
</form>

Можно ли изменить её таким образом, чтобы введенный адрес дополнительно попал в переменную, в которую сейчас вводится "Мое дополнение"?

   
 
 автор: ddhvvn   (07.06.2008 в 20:46)   письмо автору
 
   для: Владимир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> 


или меня "не в ту степь" понесло? =)

   
 
 автор: Владимир55   (07.06.2008 в 21:01)   письмо автору
 
   для: ddhvvn   (07.06.2008 в 20:46)
 

Мне нужно, чтобы после ввода введенный клиентом почтовый адрес оказался и в переменной CLIENT_MAIL, и в переменной USER_VALUE1.

А фраза "Мое дополнение" мне больше не нужна.

   
 
 автор: ddhvvn   (07.06.2008 в 21:36)   письмо автору
 
   для: Владимир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> 

   
 
 автор: Владимир55   (07.06.2008 в 21:59)   письмо автору
 
   для: 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 ?

   
 
 автор: ddhvvn   (07.06.2008 в 23:36)   письмо автору
 
   для: Владимир55   (07.06.2008 в 21:59)
 

А чем мой вариант не подходит?

p.S.: там небольшая очепяточка... слеш стоит не там )))

   
 
 автор: Владимир55   (08.06.2008 в 00:14)   письмо автору
 
   для: 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 в 01:01)   письмо автору
 
   для: Владимир55   (08.06.2008 в 00:14)
 

По просту говоря, если посетитель вводит адрес abc@mail.ru, то чтобы из формы в обработчик вышли переменные

"CLIENT_MAIL" = abc@mail.ru
"USER_VALUE1" = abc@mail.ru

   
 
 автор: ddhvvn   (08.06.2008 в 10:23)   письмо автору
 
   для: Владимир55   (08.06.2008 в 01:01)
 

Но Вам же эти переменные нужно будет передать в PHP скрипт? Если да, то я привел нормальный вариант скрипта!

   
 
 автор: Владимир55   (08.06.2008 в 10:46)   письмо автору
 
   для: ddhvvn   (08.06.2008 в 10:23)
 

Если бы для предачи в МОЙ РНР скрипт, то я бы там с ними и разобрался! А они уходят на сайт платежного сервиса. Вот потому и приходится исхитряться...

Можно что-нибудь придумать?

   
 
 автор: ddhvvn   (08.06.2008 в 11:57)   письмо автору
 
   для: Владимир55   (08.06.2008 в 10:46)
 

Тогда все нормально!
Оставляйте так!

P.S.: я работал с WM и E-GOLD, но что-то не помню, зачем передавать емайл 2 раза? =))

   
 
 автор: Владимир55   (08.06.2008 в 16:57)   письмо автору
 
   для: ddhvvn   (08.06.2008 в 11:57)
 

Я подключаю сайт к платёжной системе. И при этом возникла проблема, для решения которой я и создал эту тему. Мне нужно дублировать почту (и некоторые другие переменные, которые я продублирую по аналогии", поскольку скрипт обработки платежа не передаёт их на сайт, и у меня нет возможности послать покупателю уведомление о платеже.

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

   
 
 автор: PAT   (08.06.2008 в 20:18)   письмо автору
 
   для: Владимир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" - оно вовсе не будет участвовать в работе скрипта, но будет препятствовать автосабмиту формы.
Разумеется, есть и ещё много других способов :-)

   
 
 автор: Владимир55   (08.06.2008 в 22:32)   письмо автору
 
   для: PAT   (08.06.2008 в 20:18)
 

Спасибо, очень хорошее объяснение!

Теперь всё получилось.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования