Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Сбор данных в переменную и передача в неактивное поле input (https://javascript.ru/forum/dom-window/15256-sbor-dannykh-v-peremennuyu-i-peredacha-v-neaktivnoe-pole-input.html)

winchester7 19.02.2011 12:08

Сбор данных в переменную и передача в неактивное поле input
 
Доброго времени суток! Javascript не знаю СОВСЕМ, так что просьба не ругаться если что :) Нужен был скриптик, решил попробовать сделать его на основе примера. В итоге получилось все кроме одного.

Имеется несколько чекбоксов и переменная. Изначально переменная выглядит как abcd. Каждому чекбоксу прикреплена одна буква и необходимо присоединить эту букву к переменной, если он активен. И так с каждым чекбоксом. После этого данная переменная должна отобразиться в неактивном поле input, чтобы далее передать методом post в php скрипт.

Если желаете помочь, могу выслать скрипт в личку полностью.

Заранее спасибо.

NoResponse 19.02.2011 12:19

не надо в личку, показывайте здесь

walik 19.02.2011 12:23

<html>
<head>
<script>
	function check() {
		var input = '';
		var ch = document.getElementsByTagName('input');
		for (i = 0; i < ch.length; i++) {
			var box = ch[i];
			if (box.value == 'on')
				input += box.id;
		}
		document.getElementById('input').value = input;
	}
</script>
</head>
<body>
<input type="checkbox" id="a" checked onchange="check();" /> a<br />
<input type="checkbox" id="b" checked onchange="check();" /> b<br />
<input type="checkbox" id="c" checked onchange="check();" /> c<br />
<input type="checkbox" id="d" checked onchange="check();" /> d<br />
<input type="text" id="input" disabled="disabled" value="abcd" />
</body>
</html>


Так что ли надо ?

winchester7 19.02.2011 12:26

Наверное он довольно неуклюжий, но все же..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />&nbsp;
<title>Калькулятор стоимости админки</title>

<style type="text/css">
<!--
.style1 {
	color: #333333;
	font-size: 14px;
	font-weight:bold;
}
body {
font-family:Arial, Helvetica, sans-serif;
font-size:11px;
}
div {
color:#CCCCCC;
font-size:11px;
font-family:Georgia, "Times New Roman", Times, serif;
}
a:hover, a{
color:#CCCCCC;
text-decoration: none;
}
-->
</style>

[JS]
<SCRIPT LANGUAGE="JavaScript">
   function checkBox()
{
    if (document.form.all.checked)
    {
        document.form.perevod.checked = true;
        document.form.teleport.checked = true;
        document.form.mapmenu.checked = true;
        document.form.weaponmenu.checked = true;
        document.form.vote.checked = true;
        document.form.clientcommands.checked = true;
        document.form.grenades.checked = true;
        document.form.chat.checked = true;
        document.form.provwh.checked = true;
    }
    else
    {
        document.form.perevod.checked = false;
        document.form.teleport.checked = false;
        document.form.mapmenu.checked = false;
        document.form.weaponmenu.checked = false;
        document.form.vote.checked = false;
        document.form.clientcommands.checked = false;
        document.form.grenades.checked = false;
        document.form.chat.checked = false;
        document.form.provwh.checked = false;
    }
}

function price(form) {
if (form.perevod.checked){
var perevod=parseFloat(form.perevod.value);
}
else perevod=0;
if (form.teleport.checked){
var teleport=parseFloat(form.teleport.value);
}
else teleport=0;
if (form.mapmenu.checked){
var mapmenu=parseFloat(form.mapmenu.value);
}
else mapmenu=0;
if (form.weaponmenu.checked){
var weaponmenu=parseFloat(form.weaponmenu.value);
}
else weaponmenu=0;
if (form.vote.checked){
var vote=parseFloat(form.vote.value);
}
else vote=0;
if (form.clientcommands.checked){
var clientcommands=parseFloat(form.clientcommands.value);
}
else clientcommands=0;
if (form.grenades.checked){
var grenades=parseFloat(form.grenades.value);
}
else grenades=0;
if (form.chat.checked){
var chat=parseFloat(form.chat.value);
}
else chat=0;
if (form.provwh.checked){
var provwh=parseFloat(form.provwh.value);
}
else provwh=0;

if (form.vremia[1].checked){
var vremia=2;
}
else if (form.vremia[2].checked){
var vremia=3;
}
else if (form.vremia[3].checked){
var vremia=4;
}
else if (form.vremia[4].checked){
var vremia=5;
}
else if (form.vremia[5].checked){
var vremia=6;
}
else vremia=1;

var total=(50+perevod+teleport+mapmenu+weaponmenu+vote+clientcommands+grenades+chat+provwh)*vremia;
document.getElementById("total_price").innerHTML=total;
}
</SCRIPT>
[/JS]
</head>


<body>
<center>
<div class="style1">Расчет стоимости админки</div><br />
<form name="form"  onclick="price(this)">
<table width="350" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td colspan="3" align="center"><b>Модули</b></td>
    </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input type="checkbox" value="50" name="adminka" disabled checked />Пустая админка<hr></td>
    <td>- 50</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input type="checkbox" value="20" name="grenades" />&nbsp;Бесплатная броня и гранаты</td>
    <td>- 20</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input type="checkbox" value="20" name="perevod" />&nbsp;Перевод игрока</td>
    <td>- 20</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input type="checkbox" value="20" name="teleport" />&nbsp;Меню телепорта</td>
    <td>- 20</td>
  </tr>
    <tr>
    <td>&nbsp;</td>
    <td align="left"><input type="checkbox" value="20" name="chat" />&nbsp;Пакет "Чат"</td>
    <td>- 20</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input type="checkbox" value="30" name="mapmenu" />&nbsp;Смена карты</td>
    <td>- 30</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input type="checkbox" value="30" name="weaponmenu" />&nbsp;Меню оружия</td>
    <td>- 30</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input type="checkbox" value="40" name="vote" />&nbsp;Пакет "Голосование"</td>
    <td>- 40</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input type="checkbox" value="40" name="clientcommands" />&nbsp;Пакет "Client Commands"</td>
    <td>- 40</td>
  </tr>
   <tr>
    <td>&nbsp;</td>
    <td align="left"><input type="checkbox" value="40" name="provwh" />&nbsp;Дополнительная проверка на Вх<hr></td>
    <td>- 40</td>
  </tr>
   <tr>
    <td>&nbsp;</td>
    <td align="left"><input type="checkbox" name="all" onclick="checkBox();" />&nbsp;Подключить все</td>
    <td>- 310</td>
  </tr>
  <tr>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
<td>&nbsp;</td>
  </tr>
  <tr>
    <td colspan="3" align="center"><b>Длительность покупки</b></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><INPUT type="radio" name="vremia" value="1">&nbsp;1 месяц</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><INPUT type="radio" name="vremia"  value="2">&nbsp;2 месяца</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><INPUT type="radio" name="vremia" value="3">&nbsp;3 месяца</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><INPUT type="radio" name="vremia" value="4">&nbsp;4 месяца</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><INPUT type="radio" name="vremia" value="5">&nbsp;5 месяцев</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><INPUT type="radio" name="vremia" value="6">&nbsp;6 месяцев</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
		<td align="center"><input type="submit" value="Проба" /></td>
    <td align="center"><input type="button" value="Заказать" onclick="tf1.style.display = 'inline';"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>Итого:</b></td>

    <td align="center" id="total_price" style="color: #993300;font-weight:bold; font-size:14px">0</td>
  </tr>
</table>
</form>

<form action="sendmail.php" method="post">
<table width="350" border="0" cellspacing="0" cellpadding="0" style="display:none" id="tf1">
  <tr>
    <td colspan="2" align="left">&nbsp;&nbsp;&nbsp;<b>Заказ админки</b></td>
    </tr>
  <tr>
    <td width="90" align="left">Ник *</td>
    <td width="260" align="left"><input type="text" value="" name="name" style="width:95%;"/></td>
  </tr>
  <tr>
    <td align="left">Skype/ICQ *</td>
    <td align="left"><input type="text" value="" name="skype" style="width:95%;"/></td>
  </tr>
  <tr>
    <td align="left">Возраст *</td>
    <td align="left"><input type="text" value="" name="age" style="width:95%;"/></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input type="submit" value="Отправить уведомление" />&nbsp;</td>
    </tr>
</table>
</form>
</center>

</body>
</html>

winchester7 19.02.2011 12:28

Цитата:

Сообщение от walik (Сообщение 93143)
<html>
<head>
<script>
	function check() {
		var input = '';
		var ch = document.getElementsByTagName('input');
		for (i = 0; i < ch.length; i++) {
			var box = ch[i];
			if (box.value == 'on')
				input += box.id;
		}
		document.getElementById('input').value = input;
	}
</script>
</head>
<body>
<input type="checkbox" id="a" checked onchange="check();" /> a<br />
<input type="checkbox" id="b" checked onchange="check();" /> b<br />
<input type="checkbox" id="c" checked onchange="check();" /> c<br />
<input type="checkbox" id="d" checked onchange="check();" /> d<br />
<input type="text" id="input" disabled="disabled" value="abcd" />
</body>
</html>


Так что ли надо ?

Да, спасибо. Попробую сейчас под себя сделать :) Вдруг получится :D

winchester7 19.02.2011 12:42

Попробовал. Значения находятся в форме и в активном состоянии чекбокса, и в неактивном. Кроме того задевается работоспособность функции price. Те переменные, которые я меняю в соответствии с вашим примером после включения чекбокса выдают NaN вместо нужного значения.

walik 19.02.2011 12:49

а конкретно в вашем примере что вам надо сделать ?

winchester7 19.02.2011 14:21

Цитата:

Сообщение от walik (Сообщение 93150)
а конкретно в вашем примере что вам надо сделать ?

После 251 строчки вставить поле:

<tr>
    <td align="left">Права</td>
    <td align="left"><input type="text" value="" name="prava" style="width:95%;" disabled/></td>
 </tr>


В котором бы отображались флаги, соответствующие активным чекбоксам модулей. То бишь со 128 по 178 строчку указанного кода.

walik 19.02.2011 16:07

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />&nbsp;
<title>Калькулятор стоимости админки</title>
 
<style type="text/css">
<!--
.style1 {
    color: #333333;
    font-size: 14px;
    font-weight:bold;
}
body {
font-family:Arial, Helvetica, sans-serif;
font-size:11px;
}
div {
color:#CCCCCC;
font-size:11px;
font-family:Georgia, "Times New Roman", Times, serif;
}
a:hover, a{
color:#CCCCCC;
text-decoration: none;
}
-->
</style>
 
<SCRIPT LANGUAGE="JavaScript">
   function checkBox()
{
    if (document.form.all.checked)
    {
        document.form.perevod.checked = true;
        document.form.teleport.checked = true;
        document.form.mapmenu.checked = true;
        document.form.weaponmenu.checked = true;
        document.form.vote.checked = true;
        document.form.clientcommands.checked = true;
        document.form.grenades.checked = true;
        document.form.chat.checked = true;
        document.form.provwh.checked = true;
    }
    else
    {
        document.form.perevod.checked = false;
        document.form.teleport.checked = false;
        document.form.mapmenu.checked = false;
        document.form.weaponmenu.checked = false;
        document.form.vote.checked = false;
        document.form.clientcommands.checked = false;
        document.form.grenades.checked = false;
        document.form.chat.checked = false;
        document.form.provwh.checked = false;
    }
}
 
function price(form) {
if (form.perevod.checked){
var perevod=parseFloat(form.perevod.value);
}
else perevod=0;
if (form.teleport.checked){
var teleport=parseFloat(form.teleport.value);
}
else teleport=0;
if (form.mapmenu.checked){
var mapmenu=parseFloat(form.mapmenu.value);
}
else mapmenu=0;
if (form.weaponmenu.checked){
var weaponmenu=parseFloat(form.weaponmenu.value);
}
else weaponmenu=0;
if (form.vote.checked){
var vote=parseFloat(form.vote.value);
}
else vote=0;
if (form.clientcommands.checked){
var clientcommands=parseFloat(form.clientcommands.value);
}
else clientcommands=0;
if (form.grenades.checked){
var grenades=parseFloat(form.grenades.value);
}
else grenades=0;
if (form.chat.checked){
var chat=parseFloat(form.chat.value);
}
else chat=0;
if (form.provwh.checked){
var provwh=parseFloat(form.provwh.value);
}
else provwh=0;
 
if (form.vremia[1].checked){
var vremia=2;
}
else if (form.vremia[2].checked){
var vremia=3;
}
else if (form.vremia[3].checked){
var vremia=4;
}
else if (form.vremia[4].checked){
var vremia=5;
}
else if (form.vremia[5].checked){
var vremia=6;
}
else vremia=1;
 
var total=(50+perevod+teleport+mapmenu+weaponmenu+vote+clientcommands+grenades+chat+provwh)*vremia;
document.getElementById("total_price").innerHTML=total;

var ch = getElementsByClass('modules', form);
var prava = '';
for (i = 0; i < ch.length; i++) {
	var box = ch[i];
	if (box.checked == true) {
		prava += box.id;
	}
}
document.getElementById('prava').value = prava;
}

// Function getElementsByClass
if(document.getElementsByClassName) {
 
    getElementsByClass = function(classList, node) {   
        return (node || document).getElementsByClassName(classList)
    }
 
} else {
 
    getElementsByClass = function(classList, node) {           
        var node = node || document,
        list = node.getElementsByTagName('*'),
        length = list.length, 
        classArray = classList.split(/\s+/),
        classes = classArray.length,
        result = [], i,j
        for(i = 0; i < length; i++) {
            for(j = 0; j < classes; j++)  {
                if(list[i].className.search('\\b' + classArray[j] + '\\b') != -1) {
                    result.push(list[i])
                    break
                }
            }
        }
     
        return result
    }
}
</SCRIPT>
</head>
 
 
<body>
<center>
<div class="style1">Расчет стоимости админки</div><br />
<form name="form"  onclick="price(this)">
<table width="350" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td colspan="3" align="center"><b>Модули</b></td>
    </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input class="modules" id="a" type="checkbox" value="50" name="adminka" disabled checked />Пустая админка<hr></td>
    <td>- 50</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input class="modules" id="b" type="checkbox" value="20" name="grenades" />&nbsp;Бесплатная броня и гранаты</td>
    <td>- 20</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input class="modules" id="c" type="checkbox" value="20" name="perevod" />&nbsp;Перевод игрока</td>
    <td>- 20</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input class="modules" id="d" type="checkbox" value="20" name="teleport" />&nbsp;Меню телепорта</td>
    <td>- 20</td>
  </tr>
    <tr>
    <td>&nbsp;</td>
    <td align="left"><input class="modules" id="e" type="checkbox" value="20" name="chat" />&nbsp;Пакет "Чат"</td>
    <td>- 20</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input class="modules" id="f" type="checkbox" value="30" name="mapmenu" />&nbsp;Смена карты</td>
    <td>- 30</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input class="modules" id="g" type="checkbox" value="30" name="weaponmenu" />&nbsp;Меню оружия</td>
    <td>- 30</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input class="modules" id="h" type="checkbox" value="40" name="vote" />&nbsp;Пакет "Голосование"</td>
    <td>- 40</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><input class="modules" id="i" type="checkbox" value="40" name="clientcommands" />&nbsp;Пакет "Client Commands"</td>
    <td>- 40</td>
  </tr>
   <tr>
    <td>&nbsp;</td>
    <td align="left"><input class="modules" id="j" type="checkbox" value="40" name="provwh" />&nbsp;Дополнительная проверка на Вх<hr></td>
    <td>- 40</td>
  </tr>
   <tr>
    <td>&nbsp;</td>
    <td align="left"><input type="checkbox" name="all" onclick="checkBox();" />&nbsp;Подключить все</td>
    <td>- 310</td>
  </tr>
  <tr>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
<td>&nbsp;</td>
  </tr>
  <tr>
    <td colspan="3" align="center"><b>Длительность покупки</b></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><INPUT type="radio" name="vremia" value="1">&nbsp;1 месяц</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><INPUT type="radio" name="vremia"  value="2">&nbsp;2 месяца</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><INPUT type="radio" name="vremia" value="3">&nbsp;3 месяца</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><INPUT type="radio" name="vremia" value="4">&nbsp;4 месяца</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><INPUT type="radio" name="vremia" value="5">&nbsp;5 месяцев</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><INPUT type="radio" name="vremia" value="6">&nbsp;6 месяцев</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
        <td align="center"><input type="submit" value="Проба" /></td>
    <td align="center"><input type="button" value="Заказать" onclick="tf1.style.display = 'inline';"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>Итого:</b></td>
 
    <td align="center" id="total_price" style="color: #993300;font-weight:bold; font-size:14px">0</td>
  </tr>
</table>
</form>
 
<form action="sendmail.php" method="post">
<table width="350" border="0" cellspacing="0" cellpadding="0" style="display:none" id="tf1">
  <tr>
    <td colspan="2" align="left">&nbsp;&nbsp;&nbsp;<b>Заказ админки</b></td>
    </tr>
  <tr>
    <td width="90" align="left">Ник *</td>
    <td width="260" align="left"><input type="text" value="" name="name" style="width:95%;"/></td>
  </tr>
  <tr>
    <td align="left">Skype/ICQ *</td>
    <td align="left"><input type="text" value="" name="skype" style="width:95%;"/></td>
  </tr>
  <tr>
    <td align="left">Возраст *</td>
    <td align="left"><input type="text" value="" name="age" style="width:95%;"/></td>
  </tr>
  <tr>
    <td align="left">Права</td>
    <td align="left"><input type="text" id="prava" value="a" name="prava" style="width:95%;" disabled/></td>
 </tr>
  <tr>
    <td colspan="2" align="center"><input type="submit" value="Отправить уведомление" />&nbsp;</td>
    </tr>
</table>
</form>
</center>
</body>
</html>


Так ?

winchester7 19.02.2011 16:44

Да, то что я и хотел. Спасибо огромное! Вы мне очень помогли!
P.S. Поставил + в репу.


Часовой пояс GMT +3, время: 03:08.