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

HTML+CSS+JavaScript

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

 

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

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

тема: обновление определенных полей формы
 
 автор: V@ldem@r   (31.05.2008 в 15:09)   письмо автору
 
 

Здравствуйте!!!
У меня такая проблемка. На странице имеются 2 формы и 2 кнопки. В первой форме заносятся какие то данные, а вторая выполняет транслитерацию слов, как сделать так, чтобы если первая форма заполнена, при нажатии на кнопку, которая относится ко второй, данные занесенные в первую форму не удалились. т.е. не обновилась первая форма.

Помогите пожалуйста, очень нужно!!!

   
 
 автор: PAT   (31.05.2008 в 15:18)   письмо автору
 
   для: V@ldem@r   (31.05.2008 в 15:09)
 

Повторите то же самое, но по-русски.

Приблизительно в таком виде:

1. Имеется форма № 1
В этой форме № 1 имеется поле(-я), которое(-ые) заполняется (кем?)
В этой же форме № 1 имеется кнопка № 1 типа (какого?), по нажатию на которую происходит (что?)

2. Имеется форма № 2
В форме №2 имеется поле(-я), которое(-ые) заполняются (кем?)
В этой же форме № 2 имеется кнопка № 2 типа (какого?), по нажатию на которую происходит (что?)

3. Надо, чтобы при нажатии на кнопку № (какую?) в форме № (какой?) происходило (что?) и не происходило (что?)

   
 
 автор: V@ldem@r   (31.05.2008 в 15:33)   письмо автору
 
   для: PAT   (31.05.2008 в 15:18)
 

1. Форма №1
В этой форме имеется несколько полей. Я заполнил эти поля.
В этой форме имеется кнопка, при нажатии на которую осуществляется добавление этих данных в базу.

2. Форма №2

В этой форме имеется одно поле, в которое я вношу запись и при нажатии на кнопку, которая относится к форме №2, т.е. к этой форме, осуществляется транслитерация введенных данных.

Необходимо, чтобы после того как транслитерация произошла, данные из формы №1 не удалились, т.е. чтобы не произошло обновление формы №1.

Теперь ясно описал? Если не понятно, могу еще разок!!!

   
 
 автор: PAT   (31.05.2008 в 16:17)   письмо автору
 
   для: V@ldem@r   (31.05.2008 в 15:33)
 

Мда... товарищ не понимает.

Повторяю:
1. Кнопка номер №1 какого типа (submit, button)?
Что происходит по нажатии кнопки № 1? Сабмит формы или скриптовая обработка без перезагрузки страницы? Какая программа обрабатывает данные формы № 1 - серверная или встроенный в страницу JScript?

2. Кнопка номер №2 какого типа (submit, button)?
Что происходит по нажатии кнопки № 2? Сабмит формы или скриптовая обработка без перезагрузки страницы? Какая программа транслитерирует данные формы № 2 - серверная или встроенный в страницу JScript? Куда вывыводится результат транслитерации - в другое поле этой формы № 2 или же в какое-то поле формы № 1, или же вовсе вся страница перегружается?

   
 
 автор: V@ldem@r   (31.05.2008 в 16:26)   письмо автору
 
   для: PAT   (31.05.2008 в 16:17)
 

Извиняюсь за непонятное изложение.

Обе кнопки типа submit. При нажатии на кнопку один, происходит скриптовая обработка, но это не столь важно.

Важна вторая кнопка. Транслитерация происходит на сервере, при помощи средств РНР.
Результат транслитерации выводится в том же поле, где была введена кирилица, т.е. во второй форме.

Вся проблема то в том, что при транслитерации вся страница перезагружается, и данные из первой формы теряются.

   
 
 автор: PAT   (31.05.2008 в 16:48)   письмо автору
 
   для: V@ldem@r   (31.05.2008 в 16:26)
 

Ага, теперь. наконец, понятно.

Сабмит формы ВСЕГДА перегружает указанное в TARGET'е формы окно.
Т.е. для серверной обработки путем сабмита вам нужно иметь окно, которое можно перегрузить.
Вариантов несколько.

Вариант 1 (простой): Форма №1 и форма №2 изначально находятся в разных окнах (или - в разных фреймах на одной странице, или, например, форма №2 находится в ифрейме на странице, где кроме этого ифрейма имеется и форма №1). Тогда самбит формы №2 произойдет в том окне, где только форма №2 и находится - все данные формы №1 останутся без изменений).

Вариант 2 (еще проще): Обе формы на одной странице. Но по нажатию кнопки №2 сначала скриптом открываете новое окно, в которое и выводите результаты работы php-скрипта транслитерации (указав имя окна в атрибуте TARGET формы №2). Когда загрузка в новом окне завершится, то JScript'ом (который будет отдан этим самым php-скриптом новому окну) вы полученное транслитерлованное значение поместите в поле формы 2, а окно закроете).

Вариант 3 (самый простой): То же самое, что и в варианте 2 - обе формы на одной странице, только результат сабмита формы №2 выводите в имеющийся на той же странице невидимый ифрейм, читаете результат JScript'ом и вносите этот результат в поле формы #2

Вариант 4 (тоже не очень сложный): Обе формы на одной странице, нажатие кнопки №2 вызывает php-скрипт и получает данные через http-реквест (AJAX)

Вариант 5 (простейший, но для дураков): Обе формы на одной странице. По нажатию кнопки №2 php-скрипту передаются не только данные формы №2, но и данные формы №1 (через поле типа hidden, например). PHP-скрипт возвращает такую же страницу, но с заполненными полями формы №1 и с результатом транслитерации в форме №2. "Для дураков" потому, что зачем тогда ДВЕ формы? :-)

Примечание: варианты №№2 и 3 возможны только в том случае, если исходная страница (с формами) и php-скрипт находятся на одном домене.

Я бы делал по варианту 4. Или транслитерацию сделал бы JScript'ом.

   
 
 автор: V@ldem@r   (01.06.2008 в 10:16)   письмо автору
 
   для: PAT   (31.05.2008 в 16:48)
 

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

   
 
 автор: V@ldem@r   (01.06.2008 в 10:16)   письмо автору
 
   для: PAT   (31.05.2008 в 16:48)
 

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

   
 
 автор: PAT   (01.06.2008 в 16:47)   письмо автору
 
   для: V@ldem@r   (01.06.2008 в 10:16)
 

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=win-1251">
<script>
function transLit_U (txt)
{
//схема транслитерации (здесь - "Упрощенная")
//Кроме того, мне известны ещё, по крайней мере, 7-мь схем:
//1. Универсальная (где Ц=TZ и ц=tz )
//2. От Волапюка (где Щ=H` и щ=h` )
//3. КОИ-7 (где Щ=} и щ=] )
//4. ГОСТ 16876-71(где Щ=HH и щ=hh )
//5. ЕвроТекст-92 от Покровского (где Щ=W и щ=w )
//6. Клавиатурная (где Щ=O и щ=o )
//7. Библиотеки Конгресса США (где Х=KH и х=kh )
var CIR = ("ЩщЖЧШЮЯжчшюяАБВГДЕЗИЙКЛМНОПРСТУФХЦЫ" + "абвгдезийклмнопрстуфхсъыь").split ('');
var lat =             ("ABVGDEZIJKLMNOPRSTUFXCY" + "abvgdezijklmnoprstufxc`y'").split ('');
var LAT = new Array ('SHCH', 'shch', 'ZH', 'CH', 'SH', 'YU', 'YA', 'zh', 'ch', 'sh', 'yu', 'ya');
var s   = LAT.length;
for (var j = 0; j < lat.length; j++) LAT [j + s] = lat [j];

//непосредственно транслитерация
for (var j = 0; j < CIR.length; j++)
txt = txt.replace (new RegExp (LAT [j], 'g'), CIR [j]);

//автозамены буквы Е на Э в нужных случаях
for (var ST = new Array ('ет', 'поет', 'дуел', 'екс', 'електр', 'ео'), k = 0; k < ST.length; k++)
   {
   var r = txt.match (new RegExp ('(\\s|^)' + ST [k] + '\\S*\\s', 'ig'));
   if (r) for (var j = 0; j < r.length; j++)
      txt = txt.replace (new RegExp ('(\\s|^)' + ST [k] + '\\S*\\s', 'i'), r [j].replace (/е/, 'э').replace (/Е/, 'Э'));
   }
return (txt);
}
</script>
</head>
<body>
<form name="forma_1">
...
</form>
...
<form name="forma_2">
Введите латиницу:<br>
<textarea name="Lat_Cir" cols="80" rows="10">А=A, а=a
Б=B, б=b
В=V, в=v
Г=G, г=g
Д=D, д=d
Е=E, е=e, а также Э=E и э=e
Ж=ZH, ж=zh
З=Z, з=z
И=I, и=i
Й=J, й=j
К=K, к=k
Л=L, л=l
М=M, м=m
Н=N, н=n
О=O, о=o
П=P, п=p
Р=R, р=r
С=S, с=s
Т=T, т=t
У=U, у=u
Ф=F, ф=f
Х=X, х=х
Ц=C, ц=c
Ч=CH, ч=ch
Ш=SH, ш=sh
Щ=SHCH, щ=shch
Ъ, ъ=`
Ы=Y, ы=y
Ь, ь='
Ю=YU, ю=yu
Я=YA, я=ya</textarea><br>
<input type="button" value="Транслит" onclick="this.form.Lat_Cir.value = transLit_U (this.form.Lat_Cir.value)">
</form>
</body>
</html>
* Содержимое <TEXTAREA> приведено только с целью вашего ознакомления с "Упрощенной" схемой латиницы.
** Разумеется, вместо тега <TEXTAREA> с таким же успехом можно воспользоваться и тегом <INPUT>

   
 
 автор: V@ldem@r   (01.06.2008 в 18:50)   письмо автору
 
   для: PAT   (01.06.2008 в 16:47)
 

Спасибо еще раз за помощь, но этот скрипт переводит латиницу в кирилицу, не подскажите что в нем исправить, чтобы наооборот??? А то я в js не очень то разбираюсь!!!

   
 
 автор: PAT   (01.06.2008 в 19:16)   письмо автору
 
   для: V@ldem@r   (01.06.2008 в 18:50)
 

1. Поменяйте CIR и LAT местами, т.е.:
вместо строки
txt = txt.replace (new RegExp (LAT [j], 'g'), CIR [j]);
должна быть строка
txt = txt.replace (new RegExp (CIR [j], 'g'), LAT [j]);

2. Раздел "автозамена" не нужен, т.е.:
удалите строки
//автозамены буквы Е на Э в нужных случаях
for (var ST = new Array ('ет', 'поет', 'дуел', 'екс', 'електр', 'ео'), k = 0; k < ST.length; k++)
   {
   var r = txt.match (new RegExp ('(\\s|^)' + ST [k] + '\\S*\\s', 'ig'));
   if (r) for (var j = 0; j < r.length; j++)
      txt = txt.replace (new RegExp ('(\\s|^)' + ST [k] + '\\S*\\s', 'i'), r [j].replace (/е/, 'э').replace (/Е/, 'Э'));
   }

3. Ну и добавьте буквы Э/э, Ъ, Ь в "схему", т.е.:
вместо двух строк
var CIR = ("ЩщЖЧШЮЯжчшюяАБВГДЕЗИЙКЛМНОПРСТУФХЦЫ" + "абвгдезийклмнопрстуфхсъыь").split ('');
var lat =             ("ABVGDEZIJKLMNOPRSTUFXCY" + "abvgdezijklmnoprstufxc`y'").split ('');
должны быть строки
var CIR = ("ЩщЖЧШЮЯжчшюяАБВГДЕЗИЙКЛМНОПРСТУФХЦЫЪЭЬ" + "абвгдезийклмнопрстуфхсъыьэ").split ('');
var lat =             ("ABVGDEZIJKLMNOPRSTUFXCY`E'" + "abvgdezijklmnoprstufxc`y'e").split ('');

   
 
 автор: V@ldem@r   (01.06.2008 в 21:54)   письмо автору
 
   для: PAT   (01.06.2008 в 19:16)
 

Спасибо вам огромнейшее ещё раз!!! Теперь все работает как надо!!! Всего вам хорошего, все-таки есть на Свете хорошие люди, побольше бы таких как вы!!!)))

   
Rambler's Top100
вверх

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