Перехват события submit припередаче данных из формы

Обсуждение вопросов клиентского программирования.

Модератор: Duncon

Ответить
nmv
Сообщения: 10
Зарегистрирован: 30 авг 2004, 16:55
Контактная информация:

Привет всем !!!
Я тут столкнулась с проблемкой и никак не могу продвигаться дальше.
Может кто-нибудь поможет.:cry: !!
У меня есть форма <form name=q> , мне нужно при нажатии на кнопку этой формы одновременно передать данные формы php-скрипту (red.php) и еще при событии OnClick(); этой же кнопки выполнить функцию , которая в зависимости от выбранного значения в форме переходит на определенный URL, например, red.php?id=1.
Какую кнопку использовать type=submit или button.
Если submit, то происходит только передача данных скрипту, но я еще сюда повесила OnClick();, кот. вызывает функцию перехода и не переходит, но передача данных осуществляется.
Если использую button, то работает только OnClick(); (переход), а передача данных из формы скрипту нет.
Может что -то не так делаю ?
Заранее благодарна !!!
chur
Сообщения: 195
Зарегистрирован: 17 фев 2004, 10:44
Откуда: Riga, Latvia

Непонятно, что в итоге должно отображаться в окне: страница которую вернет скрипт при submit'е формы, или страница по адресу нового URL'а? Если обе, открывай одну из них в новом окне.
nmv
Сообщения: 10
Зарегистрирован: 30 авг 2004, 16:55
Контактная информация:

Привет, chur !!!
В итоге должен осуществляться переход по новому адресу URL, но этот адрес зависит от выбранного значения в списке формы <select> , причем в это новое окно должен передаваться выбранный параметр списка..., чтобы потом его использовать...
вот так...
и эти два действия : переход на определенный url и передача в него данных формы должны осуществляться по нажатию на одну кнопку или на одну ссылку..
А у меня при
<input type=\"Submit\" name=\"submit\" value=\"Äà\" onClick="choseUrl();">
переход происходит вот сюда:
<form name=\"f0\" action=\"red.php\" method=\"post\">
в red.php ,
а при
<input type="button" value="Äà" onClick="choseUrl();">
происходит переход на нужный url, щас покажу саму функцию :
<script language="JavaScript">
function choseUrl(){
var sel=document.f0.part.selectedIndex;
if(sel==0) { location.href='red.php?id=1'; }
if(sel==1) { location.href='red.php?id=2'; }
if(sel==2) { location.href='red.php?id=3' ; }
if(sel==3) { location.href='red.php?id=4'; }
if(sel==4) {location.href='red.php?id=5';}
}
</script>
chur
Сообщения: 195
Зарегистрирован: 17 фев 2004, 10:44
Откуда: Riga, Latvia

Я думаю, будет проще и правильней ограничиться только submit'ом, анализировать значения полей формы в php-скрипте и из него, либо загружать нужную страницу, либо посылать клиенту команду загрузиться по новому адресу, что-то типа "Location: http://coolsite.com/php.red?id=x\n\n".
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

nmv,
<script>
function foo()
{
alert('hi');
}
</script>
<form onSubmit="foo()" action="new.php">
<input type="submit" value="doit">
</form>

Событие onSubmit происходит до отправки данных формы, потому в ф-ции foo() можно сделать переход, или открыть второе окно, если нужно получить два в результате. Кроме того, в этом случае можно отправлять данные и просто по нажатию Enter, что есть удобнее, чем просто button.

Но если в конечном итоге должно быть лишь одно окно, то chur прав, и надёжнее сделать это в php.
Мало ли какие броузеры как понимают переход на новую страницу по Javascript, а hearder("location: new2.php"); идёт на уровне протокола HTTP (или я ошибаюсь?), что вернее обеспечит переход.
nmv
Сообщения: 10
Зарегистрирован: 30 авг 2004, 16:55
Контактная информация:

про location ясно ....надо попробовать, спасибо!!!!
правда я уже обошла эту проблему, сроки поджимают, только не смейтесь
Я сделала так:правда пришлось вместо одной кнопки использовать 2, ну типа "удалить"и потом "далее...", вот так...
использовала две формы, в первой на php я фиксирую нужное значение, а во вторую передаю это значение так:
action="red.php?id=<?echo $r;?>" и так перехожу на другой url.
знаю, что не очень, ведь 2 кнопки,
ну сейчас последую вашим советам, еще раз спасибо, что не отказали в трудную минуту, !!!!!!!
Ответить