|
|
|
| Здраствуйте,
Помогите пожалуйста замутить следуещее:
Есть список чекбоксов на страничке, каждый раз их количество разное!
И есть линк, который идет на пхп скрипт. Смотриться примерно так:
<input type='checkbox' name='account' value='"saiudfgasdf" />
<input type='checkbox' name='account' value='"asdfasdfasdf" />
<input type='checkbox' name='account' value="asdfasdfasdf"/>
..................
<a href='../scripts/scripts.php?account=' >Suspend</a>
так надо что бы вконце значения href добавлялось значение соответствуещего чекбокса и не одного а всех которые выделены, к примеру через пробел или нижнее подчеркивание.
Обратите внимание нейм всех чекбоксов одинаковый и их неопределенное количество. Вообще существует функция подсчета чекбоксов на странице. (Я просто не могу их посчитать поскольку в скрипте который их выводит используюються дочерные процессы, которые могут вернуть один чекбокс а могут больше сотни)
Большое спасибо.. | |
|
|
|
|
|
|
|
для: svk1be
(04.02.2008 в 17:57)
| | После долгого изучения "изобрел" один вариант:
<input type='checkbox' name='account' value='something' onclick="document.links[1].href=+this.value"/>
<a id='1' href='../scripts/scripts.php?account=' >Link1</a>
|
но почему то не работает :(
Можете глянуть, почему..
Спс | |
|
|
|
|
|
|
|
для: svk1be
(04.02.2008 в 21:44)
| | 1. id не должно начинаться с цифры
2. коллекция document.links имеет свою индексацию
3. обращаться к ссылке, имеющей id, поэтому лучше через метод getElementById
4. оператор "добавить" пишется так +=, а не =+ как у вас
И вообще - это не решение.
Ибо два клика по одному чекбоксу добавят вам два значения. А де-факто чекбокс-то не отмечен. | |
|
|
|
|
|
|
|
для: CNTv2.0
(05.02.2008 в 03:10)
| | Извините, но я не очень знаю Джаву, потому и интересуюсь - что не правильно и что нужно добавить. Можно использовать "checked?" только я не очень уверен как. подскажите пожалуйста, как можно реализовать решение этой проблемы. Вот например, сделать так, что бы если ставлю checked, то оно добавляет, если ставлю unchecked - то убирает. Или может добавить опцию onclick на сам линк, тоесть когда по нему кликаешь, что бы он пробегал по всем боксам и проверял какие отмечены а какие нет.. а потом срабатывал. Вот только проблема - он не знает сколько их.. Тут цыкл надо с запасом делать.. :)
К примеру:
<a href=... onclick="this.href+='?check1='+(document.getElementById('ch1').checked?'on':'off');">***</a>
<input id=ch1 ...>
|
но если чек-боксов много (от 1 до 150 и каждый раз разное число, заранее неизвесное), то как
проверить все?
Типа этого?
<a href=... onclick="this.href+='?check='+(document.getElementById('ch1').checked?'on':'off');">***</a>
<input id=ch1 ...>
<input id=ch2 ...>
<input id=ch3 ...>
..............
|
Как узнать сколько чекбоксов на страничке и как их передать в цыкле?
Помогите разобраться плиз.
Огромное спасибо!!! | |
|
|
|
|
|
|
|
для: svk1be
(05.02.2008 в 14:00)
| |
<html>
<head>
<script>
function myFunc (x)
{
for (var rez = new Array (), obj = document.getElementsByName ('account'), j = 0; j < obj.length; j++)
if (obj [j].checked) rez [rez.length] = obj [j].value;
x.href += rez.join ('&');
}
</script>
</head>
<body>
..................
<input type='checkbox' name='account' value="saiudfgasdf" />
<input type='checkbox' name='account' value="asdfasdfasdf" />
<input type='checkbox' name='account' value="asdfasdfasdf"/>
..................
<a href="../scripts/scripts.php?account=" onclick="myFunc (this)">Suspend</a>
..................
</body>
</html>
|
PS. Учтите, что максимальная длина URL - 216 символов, начиная от http://. Если у вас будет 150 чекбоксов, да клиент отметит хотя бы два десятка из них, то (при длинных значениях value каждого чекбокса) итоговое значение URL обрежется. | |
|
|
|
|
|
|
|
для: CNTv2.0
(05.02.2008 в 17:28)
| | Спасибо за вариант решения, вот только оно не добаваляет к линку все отмеченые значения,
Допустим на страничке два чекбокса, если я отмечаю верхний то добавляет его, если нижний, то его добавляет значиение нижнего. А если я отметил значение нижнего и вверхнего, то берет только верхний(первый). Подскажите что означает
x.href += rez.join ('&');
| тогда может я сам разберусь. Спасибо | |
|
|
|
|
|
|
|
для: svk1be
(05.02.2008 в 18:02)
| | Вообщем сделал вот так:
function myFunc (x)
{
for (var rez = new Array (), obj = document.getElementsByName ('account'), j = 0; j < obj.length; j++){
if (obj [j].checked){
rez [rez.length] = obj [j].value;
x.href += obj [j].value;
}
}
}
|
Заработало то что надо!!!
Еще раз большое спасибо!!!! | |
|
|
|
|
|
|
|
для: svk1be
(05.02.2008 в 18:39)
| | Только можно вопросик?
Почему когда я кликаю правой кнопкой мыши и выбираю открыть в новом окне - оно не срабатывает(окно открываеться, но дынные с чекбоксов не передаються :( )? Джава скрипт не позволяет? Можно как то решить эту проблему?
Спс | |
|
|
|
|
|
|
|
для: svk1be
(05.02.2008 в 19:03)
| | кто нибуть знает? Извените за настойчивость, но это мне очень важно :(
Спасибо.. | |
|
|
|
|
|
|
|
для: svk1be
(05.02.2008 в 19:03)
| | >Почему когда я кликаю правой кнопкой мыши и выбираю открыть в новом окне - оно не срабатывает
Потому что скрипт прописан для события onclick, а onclick - это "нажал-отпустил" ЛЕВУЮ кнопку мыши.
>Можно как то решить эту проблему?
Так вы обозначьте проблему-то. Что вам надо РЕШИТЬ? | |
|
|
|
|
|
|
|
для: CNTv2.0
(07.02.2008 в 14:46)
| | >Так вы обозначьте проблему-то. Что вам надо РЕШИТЬ?
Как сделать, что бы при выборе опции "открыть в новом окне/новой вкладке" в контексном меню линка джава скрипт тоже срабатывал. | |
|
|
|
|
|
|
|
для: svk1be
(07.02.2008 в 16:08)
| | В самом простом случае, можно продублировать всё то, что написано для onclick ещё и для события oncontextmenu. Тогда при "нажал-отпустил" ПРАВУЮ кнопку мыши у вас тоже изменится href (т.е. скрипт выполнится).
Только вот далее... могут быть проблемы. Ибо, вызов контекстного меню отслеживается (как я и написал - oncontextmenu), а вот, что именно вы выбрали в контекстном меню (и выбрали ли) отследить нельзя. Поэтому, представьте - кликнул один раз правой кнопкой, но передумал открывать в новом окне и, закрыв контекстное меню (кликом где-то по странице), решил открыть в текущем - href тогда дважды изменится...
В общем, надо сгородить чего-то, что будет помнить клики (и началное значение href)...
А мне щас лениво...
Если только позже. | |
|
|
|
|
|
|
|
для: CNTv2.0
(07.02.2008 в 18:47)
| | Спасибо конечно, но это не решенее. Вы пользовались файрфксом, оперой или 7-м експлорером ?
Если да, то наверное заметили, что если у мышки есть колесико и оно нажимаеться, то при нажатии колесиком на мышке - открываеться линк в другой ссылки. Вот именно то что меня интересует :)
Спасибо
К стати, почему то в Опере java код срабатывает при кликанье колесиком по умолчанию, видно принцып работы (движок) у нее отличаеться.. | |
|
|
|
|
|
|
|
для: svk1be
(07.02.2008 в 21:47)
| | Вам РЕАЛЬНО надо, чтобы имелась возможность открытия этой ссылки в другом окне?
Или же вы просто МОДЕЛИРУЕТЕ возможные баги при работе скрипта?
Ведь, например, если поместить на ссылку фокус при помощи клавиши TAB, а потом нажать на клавишу ENTER, то ведь тоже произойдет переход по ссылке, но скрипт не сработает.
Если просто моделируете, то тогда не проще ли заменить тег <a> на какой-нить <span>?
На который повесить один-единственный обработчик onclick и тогда любые иные действия клиента (клики по правой кнопке, по колесику и прочее) будут для скрипта неактуальны - пусть хоть "укликается" весь ваш клиент :-) | |
|
|
|
|
|
|
|
для: CNTv2.0
(07.02.2008 в 22:07)
| | Спасибо большое... Вообще то мне это надо для функциональности. Использоваться это будет в панельке для админов, а скорость тут важна. Потому очень важно что бы можно было запустить срипт в отдельном окне, а в это время просматривать текущую страничку.. может еще что то нажать надо будет :). Потому как возвращаться это лишнее время..
А на счет <span>.. С этого места пожалуйста по-подробнее.. Какая разница от <a> и дополнительная функционаьлность. Есть идеи как воплотить это в жизнь?
Спасибо огромное.. | |
|
|
|
|
|
|
|
для: svk1be
(09.02.2008 в 22:49)
| |
<html>
<head>
<script>
function myFunc (x, y)
{
for (var chk = new Array (), obj = document.getElementsByName ('account'), j = k = 0; j < obj.length; j++)
if (obj [j].checked) chk [k++] = obj [j].value;
if (!y) document.location.href = x + chk.join ('&'); //прим.1
else window.open (x + chk, '_blank'); //прим.2
}
</script>
</head>
<body>
............
<input type="checkbox" name="account" value="a">
<input type="checkbox" name="account" value="b">
<input type="checkbox" name="account" value="c">
............
<u style="cursor: pointer" onclick="myFunc ('http://myserver.ru/scripts/scripts.php?account=', 0)">В текущем окне</u> <!-- прим.3 -->
<u style="cursor: pointer" onclick="myFunc ('http://myserver.ru/scripts/scripts.php?account=', 1)">В новом окне</u> <!-- прим.4 -->
............
</body>
</html>
|
Примечания:
1. Если разделители не нужны, то chk.join ('&') замените на chk.join ('')
2. Если надо, чтобы новое окно было одним и тем же (а не новое для каждого нажатия), то замените '_blank' на, например, 'myNewWin' (т.е. на любое валидное имя переменной)
3,4. Обратите внимание, что надо использовать абсолютный URL вашего PHP-скрипта | |
|
|
|