Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблемы в форме с checkbox, что делать? ) (https://javascript.ru/forum/misc/37820-problemy-v-forme-s-checkbox-chto-delat.html)

Rusakova 08.05.2013 15:12

Проблемы в форме с checkbox, что делать? )
 
У нас есть форма, в которой нужно ввести имя, отметить пол и внести эти данные в список с пометкой пола (м) или (ж). Также можно удалять из списка.
У нас чикбоксы не работают, помогите пожалуйста исправить :)http://fotki.yandex.ru/users/rusakov.../739309?page=0
<HTML>
	<HEAD>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<TITLE>Добавление и удаление элементов из списков</TITLE>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
		<script type="text/javascript">

		function focusElement() {
			var elem = document.forms[0].myInput;
			elem.focus();
		}
		function addList(){
			valid = true;
			document.forms[0].myInput.focus()
			var list1 = document.getElementsByTagName('select')[0];
			var li   = document.createElement('option');
			var chek_m = document.getElementsByTagName ;
/*Запрещение ввода пустой строки */
			if (document.forms[0].myInput.value<1)
			return valid;
/* Ввод в список из текстового поля */
			li.innerHTML =document.forms[0].myInput.value
/* Очистка текстового поля */
			document.forms[0].myInput.value=""
			list1.appendChild(li);} 
		</script>
	</HEAD>
	<BODY onload='focusElement()'>
		<form name="form1">
		<br /><b>Введите имя</b><br />
		<input name="myInput" value= "" size="42"> <br /><br />
		<input type="checkbox" name="checkbox" id="chek_m"> men <br>
		<input type="checkbox" name="checkbox" id="chek_w"> women <br>
		<input onclick='addList()' type='button'
		value='Добавить'><br />
		<input type=button value='Удалить'
		onClick="for(i=0;i<form.elements[3].length;i++)
		if(form.elements[3].options[i].selected==true)
		form.elements[3].options[i] = null;"><br /><br />
		<b>Список<br /><br />
		<select size="5" multiple id="list1"></<select>
		</form>
	</BODY>
</HTML>

animhotep 08.05.2013 15:17

что вы понимаете под не работают? они активны
<HTML>
	<HEAD>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<TITLE>Добавление и удаление элементов из списков</TITLE>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
		<script type="text/javascript">

		function focusElement() {
			var elem = document.forms[0].myInput;
			elem.focus();
		}
		function addList(){
			valid = true;
			document.forms[0].myInput.focus()
			var list1 = document.getElementsByTagName('select')[0];
			var li   = document.createElement('option');
			var chek_m = document.getElementsByTagName ;
/*Запрещение ввода пустой строки */
			if (document.forms[0].myInput.value<1)
			return valid;
/* Ввод в список из текстового поля */
			li.innerHTML =document.forms[0].myInput.value
/* Очистка текстового поля */
			document.forms[0].myInput.value=""
			list1.appendChild(li);} 
		</script>
	</HEAD>
	<BODY onload='focusElement()'>
		<form name="form1">
		<br /><b>Введите имя</b><br />
		<input name="myInput" value= "" size="42"> <br /><br />
		<input type="checkbox" name="checkbox" id="chek_m"> men <br>
		<input type="checkbox" name="checkbox" id="chek_w"> women <br>
		<input onclick='addList()' type='button'
		value='Добавить'><br />
		<input type=button value='Удалить'
		onClick="for(i=0;i<form.elements[3].length;i++)
		if(form.elements[3].options[i].selected==true)
		form.elements[3].options[i] = null;"><br /><br />
		<b>Список<br /><br />
		<select size="5" multiple id="list1"></<select>
		</form>
	</BODY>
</HTML>

ksa 08.05.2013 15:23

Цитата:

Сообщение от Rusakova
У нас чикбоксы не работают

Определение взаимоисключающих значение не делают чекбоксами... Человек не может иметь оба пола сразу.

Для этого используют радиобаттоны или селект...

Rusakova 08.05.2013 15:26

так надо чтобы к вносимому имени приписывался пол ... Надо через чик бокс, препод сказал (

skrudjmakdak 08.05.2013 15:36

разбейте нос вашему преподу))) и скажите что так не делают))

а если серьезно, то вешайте на checkbox событие onchange и если один чек бокс активный, то второй делаем не активным

animhotep 08.05.2013 15:38

для начала его вобще нужно хоть как то обработать http://codepen.io/anon/pen/qicda
дальше можете активностями рулить

skrudjmakdak 08.05.2013 15:40

как то так:

<input type="checkbox" name="checkbox" id="chek_m" onchange="if (this.checked) document.getElementById('chek_w').checked = false;"> men <br>
<input type="checkbox" name="checkbox" id="chek_w" onchange="if (this.checked) document.getElementById('chek_m').checked = false;"> women <br>

skrudjmakdak 08.05.2013 15:48

.......
if (document.forms[0].myInput.value<1)
			return valid;
/* Ввод в список из текстового поля */

			var j = document.getElementById('chek_w').checked;
			var m = document.getElementById('chek_m').checked;
			if (!(m || j))
				{
				alert('выберите пол!');
				return;
				}
			
			li.innerHTML = (m ? 'мужик, епта.' : 'бабенция.') + ' ' + document.forms[0].myInput.value;
/* Очистка текстового поля */

.....

animhotep 08.05.2013 15:50

ага, тернарный оператор здесь самое понятное решение)

Rusakova 08.05.2013 19:18

спасибо всем кто откликнулся ) все попробуем! :yes:


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