|
|
|
|
|
для: CNT
(21.05.2007 в 11:47)
| | CNT еще раз благодарю! Код отлично работает!
Спасибо все за помощь! | |
|
|
|
|
|
|
|
для: ilyaILF
(21.05.2007 в 11:36)
| | Спасибо, проверил на работоспособность ваш код. Но при определенном количестве выбранных галочек (кажется трех) блокируется сама кнопка "Голосовать". Но это уже не важно, так как удачно заработал код предложенный CNT.
Огромное спасибо за добросовестную помощь! | |
|
|
|
|
|
|
|
для: major2
(21.05.2007 в 02:41)
| | Сорри, случайно опустил две фигурные скобки в своём варианте (после if (R == 3) следовало их поставить).
Давайте, раз уж тут пошла мода "портянки развешивать", и я дам полный код (у меня он работает в MSIE6, OPERA8.5, FF2):
<html><head><script>
function funcClick ()
{
for (var R = 0, x = document.forms.myForm, j = 0; j < x.elements.length; j++)
if (x.elements [j].type == 'checkbox' && x.elements [j].checked) R++;
if (R == 3) {for (j = 0; j < x.elements.length; j++)
if (x.elements [j].type == 'checkbox' && !x.elements [j].checked) x.elements [j].disabled = 1}
else for (j = 0; j < x.elements.length; j++)
if (x.elements [j].type == 'checkbox') x.elements [j].disabled = 0;
}
</script></head>
<body BGCOLOR="#C1E7E7">
<table cellpadding="0" bgcolor="#C1E7E7">
<form action="/var/write.php" method="post" name="myForm">
<input type="hidden" name="name" value="var">
<colgroup align="right"></colgroup>
<colgroup></colgroup>
<tr>
<td>
<pre><font color="#0C5574" style="font-size:9px; font-family:Verdana">
Готовлюсь все отведенное
время и не успеваю: <input type="checkbox" name="vote[0]" value="1" onclick="setTimeout (funcClick, 0)">
Успеваю за отведенное время
подготвиться к экзамену:<input type="checkbox" name="vote[1]" value="1" onclick="setTimeout (funcClick, 0)">
Готовлюсь последние
один, два дня и сдаю: <input type="checkbox" name="vote[2]" value="1" onclick="setTimeout (funcClick, 0)">
Готовлюсь последние один,
два дня и проваливаю: <input type="checkbox" name="vote[3]" value="1" onclick="setTimeout (funcClick, 0)">
Сдаю экзамен за
дополнительную плату: <input type="checkbox" name="vote[4]" value="1" onclick="setTimeout (funcClick, 0)">
</font> </pre>
</td>
</tr>
<tr>
<td align="center">
<input type="submit" value="Голосовать">
</td>
</tr>
</form>
</table>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: major2
(21.05.2007 в 09:10)
| | Я думаю, что править коды PHP смысла нет, тем более, что этот пример был скачан и представляет собой законченный програмный модуль, поэтому с минимальными изменениями оставляем вышеуказанный код javascript:
<script type="text/javascript">
(d=document).onclick=function checkselect(evt)
{
evt=evt||event;
if((checkObj=d.all?evt.srcElement:evt.target).tagName!='INPUT')return;
if(checkObj.type!='checkbox')return;
else{
for(var i=0,check=d.getElementsByTagName('INPUT'),checksum=0;i<check.length;i++)
if(check[i].checked)checksum+=1;else check[i].disabled=false;
if(checksum=='3')for(var i=0;i<check.length;i++)if(!check[i].checked)check[i].disabled=true;
}
}
</script>
| свои же параметры исходных файлов оставляете без изменений в первоначальном виде. | |
|
|
|
|
|
|
|
для: ilyaILF
(21.05.2007 в 05:12)
| | У меня есть свой php скрипт высчитывающий результат и записывающий в файл:
<?php
# Argon PHP-Voting 0.1 (write.php)
# Copyright 2004 Argon
# http://argon.com.ru/
extract($HTTP_POST_VARS);
extract($HTTP_GET_VARS);
# Не позволять повторно голосовать, в днях
$days=0;
if(isset($vote) and $name and !isset($HTTP_COOKIE_VARS['opros-'.$name]))
{
@$results=file($name.'.txt') or exit('<b>Неверное имя опроса.</b>');
$count=count($results);
for($n=0;$n<$count;$n++)
{
$temp= explode('¦',$results[$n]);
settype($temp[1],'int');
$vname[$n]=$temp[0];
$vnumb[$n]=$temp[1];
}
if(is_array($vote))
{
foreach($vote as $k=>$v)
{
$vnumb[$k]=$vnumb[$k]+1;
}
}
else
{
$vnumb[$vote]=$vnumb[$vote]+1;
}
$write='';
for($n=0;$n<$count;$n++)
{
$write=$write.$vname[$n].'¦'.$vnumb[$n]."\n";
}
$fp=fopen($name.'.txt','w');
fwrite($fp,$write);
fclose($fp);
setcookie('opros-'.$name,'1',time()+60*60*24*$days);
echo('<body bgcolor="#C1E7E7"><b>Ваш голос учтён.<b></body>');
# Чтобы не выводить результаты после голосования, поставьте # перед include...
include('echo.php');
}
elseif(isset($HTTP_COOKIE_VARS['opros-'.$name]))echo('<body bgcolor="#C1E7E7"><b>Вы уже отдали свой голос. Чтобы проголосовать снова, приходите через сутки. <a href="http://etph.org.ru/var/echo.php?name=var">Результаты</a></b></body>');
else echo('<body bgcolor="#C1E7E7"><b>Вы не проголосовали. Пожалуйста, <a href="http://etph.org.ru/var/var2.php">проголосуйте</a></b></body>');
?>
|
Я конечно не профи в php и javascripte, но понимаю, что для этого скрипта требуется различные имена итпутов. Если не прав поправте.
Вобщем, большая просьба написать на javascripte блокиратор больше трех вариант, да так чтобы результат удачно отпралялся и обрабатывался именно на этом php-скприпте.
Еще раз спасибо! | |
|
|
|
|
|
|
|
для: major2
(21.05.2007 в 02:36)
| | Рабочий вариант вашей задачи:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<script type="text/javascript">
(d=document).onclick=function checkselect(evt)
{
evt=evt||event;
if((checkObj=d.all?evt.srcElement:evt.target).tagName!='INPUT')return;
if(checkObj.name!='vote[]')return;
else{
for(var i=0,check=d.getElementsByName(checkObj.name),checksum=0;i<check.length;i++)
if(check[i].checked)checksum+=1;else check[i].disabled=false;
if(checksum=='3')for(var i=0;i<check.length;i++)if(!check[i].checked)check[i].disabled=true;
}
}
</script>
</head>
<body BGCOLOR="#C1E7E7">
<form method="POST" action="var/write.php">
<input type="hidden" name="name" value="var" />
<input type="checkbox" name="vote[]" value="1" /> Готовлюсь все отведенное время и не успеваю.<br />
<input type="checkbox" name="vote[]" value="2" /> Успеваю за отведенное время подготовиться к экзамену.<br />
<input type="checkbox" name="vote[]" value="3" /> Готовлюсь последние один, два дня и сдаю.<br />
<input type="checkbox" name="vote[]" value="4" /> Готовлюсь последние один, два дня и проваливаю.<br />
<input type="checkbox" name="vote[]" value="5" /> Сдаю экзамен за дополнительную плату.<br />
<input type="submit" value="Голосовать" />
</body>
</html>
| файл PHP должен располагаться во вложенной папке var/write.php:
<?
$variant=array("Готовлюсь все отведенное время и не успеваю.","Успеваю за отведенное время подготовиться к экзамену.","Готовлюсь последние один, два дня и сдаю.","Готовлюсь последние один, два дня и проваливаю.","Сдаю экзамен за дополнительную плату.");
$votes=$_POST["vote"];
for($i=0;$i<count($votes);$i++){
echo $variant[$votes[$i]-1]."<br />";
}
?>
| P.S. Как раз имена элементов и могут быть одинаковыми, потому как все-равно в результате получается индексированный массив значений, а вот значения (value) должны быть разными, иначе задача выбора разных результирующих величин теряет всяческий смысл.
У нас всегда все функционирует, и даже PHP! :-) | |
|
|
|
|
|
|
|
для: CNT
(20.05.2007 в 17:35)
| | CNT, спасибо Вам за помощь. Но предложенный код ни как не функционирует. | |
|
|
|
|
|
|
|
для: ilyaILF
(20.05.2007 в 20:32)
| | ilyaILF , ваш код отлично сработал на блокирование больше трех ответов. А вот с отправкой трех ответов не справился. Так как при отправке голосов очень важно имя инпута для правильной обработки php скрипта на сервере, а вы им почему-то пренебрегли. Поэтому отправляется только один голос. Я пробывал чтоб все имена были разными, как того требует php скрипт, то есть name="vote[0]" , name="vote[1]" и тд . Но блокировки вариантов больше трех не оказалось.
Прошу еще раз помочь. Огромное списибо за помощь. | |
|
|
|
|
|
|
|
для: sim5
(21.05.2007 в 02:13)
| | Спокойного сна...
P.s.: А я вот еще долго не усну. Коды ведь нормально не работают, а сам не черта не соображаю в JS. | |
|
|
|
|
|
|
|
для: major2
(21.05.2007 в 02:06)
| | Достаточно, если учесть ваши дополнения в скобках, тогда это возможно, а вот изюминку учителя физики мне не осилить... зато я усну.)) | |
|
|
|
|