Коллеги, здравствуйте!Существует форма на странице. В заголовке этой формы ставлю:
<form action="javascript:openWindow('calc.html',500,460);" method="POST">
Т.е. по нажатию клавиши submit будет открыто новое окно. Проблема заключается в том, что в это новое окно не передаются данные, содержащиеся в форме на текущей странице. Пробовал метод GET - тоже ничего не передается. Как туда эти данные передать?функция openWindow описана так:
<script type="text/javascript" language="JavaScript">
function openWindow(url,x,y) {
x+=120;
y+=180;
newWindow = window.open(url,"newWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width="+x+",height="+y);
}
</script>Заранее спасибо за ответ!
Краткий ликбез
1. Данные формы могут быть обработаны только скриптом на сервере, но не в простом html
2. action подразумевает url скрипта на сервере и именно для него играет роль method, если же вы подменяете action на js, то стандартных действий не происходит и method роли не играет
3. Действие GET можно сымитировать ручной формировкой url для window.open, хотя практической пользы в вашем случае ноль(если конечно сервер не сконфигурирован извращенцем на обрабатку calc.html как скрипта). Действие POST через window.open сымитировать нельзя.Почитайте таки что-нибудь из серии для чайников по веб-программированию ибо на лицо абсолютное непонимание базовых принципов.
calc.html - это PHP-скрипт. Говоря вашим языком - апач сконфигурирован "извращенцем", т.е. мной.
Тогда формируйте get запрос вручную. Учтите, что он ограничен размером и не поддерживает upload. Пример:
<script type="text/javascript" language="JavaScript">
function openWindow(url,x,y) {
param='?name='+document.getElementById('name').value+'&pass='+document.getElementById('name').value;
x+=120;
y+=180;
newWindow = window.open(url+param,"newWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width="+x+",height="+y);
}
</script>
<form action="javascript:openWindow('calc.html',500,460);" method="POST">
<input id="name">
<input id="pass">
</form>Возможно значения параметров надо подвергать url encoding, но мне лень искать какой функцией это делается и смотреть описание window.open на предмет подобной необходимости(двойная кодировка также вредна как и ее полное отсутствие).
Спасибо! Почти получилось. Только вот что интересно, если элемент формы чекбокс (например <input type="checkbox" id="skidka">), то при вашем подходе в ГЕТ-запрос передается значение on в любом случае и когда галочка поставлена на элементе и когда не поставлена. Может быть можно как-то проверить, взведен ли чекбокс?
Почитайте какие атрибуты имеют элементы формы и именно их проверяйте, для checkbox это что-то вроде checked вместо value
Ух ты! Получилось! Спасибо!В форме:
<input type="checkbox" id="skidka">
а в жава-скрипте:
if(document.getElementById('skidka').checked) param = param+'&skidka=on';
Надеюсь, кому-то тоже будет полезно