Прошу помощи form vs javascript

[Удален]
713

есть форма


<form id="search" action="/search/" method="get" name="search">
<input class="search_input" type="text" name="text" maxlength="300" />&nbsp;<input class="search_bottom" onclick="checkform(this.form.method.value, this.form.text.value); return false;" type="submit" value="Найти" /><br />
<input type="radio" name="method" value="n" checked="checked" />Новости <input type="radio" name="method" value="v" />Видео <input type="radio" name="method" value="f" />Кинофильмы <input type="radio" name="method" value="t" />Телеканалы <input type="radio" name="method" value="r" />Радиостанции
</form>

есть скрипт (тупейший конечно, но это тестовое всё)


function checkform (method,value) {
if (value == '') {
alert("Пожалуйста ввдеите ключевое(ые) слово(а) поискоого запроса");
return false;
}
if (method == 'n') {
return document.location="/search/n/"+value+"/";
}
if (method == 'v') {
return document.location="/search/v/"+value+"/";
}
if (method == 'f') {
return document.location="/search/f/"+value+"/";
}
if (method == 't') {
return document.location="/search/t/"+value+"/";
}
if (method == 'r') {
return document.location="/search/r/"+value+"/";
}
if((!method)){
alert("Пожалуйста ввдеите ключевое(ые) слово(а) поискоого запроса");
return false;
}
}

При выборе radio кнопки должна передаваться только одна, но в данном примере не срабатывает ничего, выбирается вроде одна, но javascript не видит ничего ((

вообщем мысль вроде понятна, может кто посоветует решение на данном примере.

проблема заключается в элементарном, но чёто не могу найти инфу по этому случаю (

Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#1

method - массив, соответственно в процедуру надо передавать не method.value, а method

и в скрипте обращаться как к массиву.

Пример:

<script type="text/javascript">
function checkform (method,value) {
for ( var i = 0; i < method.length; i++ ){
alert(method.value);
}
}
</script>
<form id="search" action="" method="get" name="search">
<input class="search_input" type="text" name="text" maxlength="300" />
&nbsp;
<input class="search_bottom" onClick="checkform(method, text.value); return false;" type="submit" value="Найти" />
<br />
<input type="radio" name="method" value="n" checked="checked" />
Новости
<input type="radio" name="method" value="v" />
Видео
<input type="radio" name="method" value="f" />
Кинофильмы
<input type="radio" name="method" value="t" />
Телеканалы
<input type="radio" name="method" value="r" />
Радиостанции
</form>

Выбранную кнопку надо искать перебором массива и проверкой свойства checked

if (method.checked === true) ...

aleksey_php
На сайте с 17.03.2008
Offline
53
#2

function checkform (methodObject,value) {
var method = null;
for(var i = 0; i < methodObject.length; i++){
if(methodObject.checked){
method = methodObject.value;
break;
}
}
if (value == '') {
alert("Пожалуйста ввдеите ключевое(ые) слово(а) поискоого запроса");
return false;
}
if (method == 'n') {
return document.location="/search/n/"+value+"/";
}
if (method == 'v') {
return document.location="/search/v/"+value+"/";
}
if (method == 'f') {
return document.location="/search/f/"+value+"/";
}
if (method == 't') {
return document.location="/search/t/"+value+"/";
}
if (method == 'r') {
return document.location="/search/r/"+value+"/";
}
if((!method)){
alert("Пожалуйста ввдеите ключевое(ые) слово(а) поискоого запроса");
return false;
}
}

upd: Не заметил, что Алексей Барыкин уже ответил. :)

[Удален]
#3

aleksey_php, Алексей Барыкин Спасибо огромное!

KosoyRoman добавил 07.03.2009 в 16:51

aleksey_php Скрипт работает в IE, в FF не хочет (((

malls
На сайте с 08.08.2005
Offline
255
#4

KosoyRoman обращали когда-нибудь внимание что даже на самых навороченных порталах, обычно вместо radio используют select, даже в таких примитивных случаях как при выборе пола в момент регистрации. Казалось бы - чего там - фигня - две позиции.

Это все от того, что грабли с радио c этим обычно...

Совет на все случаи жизни:

<input type="hidden" name="real_method" value="n">

<input type="radio" name="method" value="n" checked="checked" onClick="form.real_method.value=this.value;" />Новости

<input type="radio" name="method" value="v" onClick="form.real_method.value=this.value;" />Видео

Дальше я думаю понятно! И циклы никакие не нужны...

[Удален]
#5

malls вот спасибо, у самого не хватило тямы допетрить ))))

malls
На сайте с 08.08.2005
Offline
255
#6
KosoyRoman:
malls вот спасибо, у самого не хватило тямы допетрить ))))

Да пожалуйста! :)

aleksey_php
На сайте с 17.03.2008
Offline
53
#7
KosoyRoman:
aleksey_php, Алексей Барыкин Спасибо огромное!

KosoyRoman добавил 07.03.2009 в 16:51
aleksey_php Скрипт работает в IE, в FF не хочет (((

Проверял именно в FF. Я забыл указать, что здесь:

<input class="search_bottom" onclick="checkform(this.form.method.value, this.form.text.value); return false;" type="submit" value="Найти" />

... нужно this.form.method.value заменить на просто this.form.method, о чём как раз написал Алексей чуть раньше меня.

dkameleon
На сайте с 09.12.2005
Offline
386
#8
KosoyRoman:
<form id="search" action="/search/" method="get" name="search">

вообще у тебя похоже проблема была в том, что имя поля совпадает с атрибутом формы :)

Дизайн интерьера (http://balabukha.com/)
[Удален]
#9

Ребят, еще вопрос, как подключить обработчик enter'a + отключить при отключенных javascript и вообще реально такое?

при нажатии entar'а щас переходит по обычному get в форме отключил всё, оставил только <form id="search">

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий