Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.03.2013, 16:34
Профессор
Отправить личное сообщение для Vasy Посмотреть профиль Найти все сообщения от Vasy
 
Регистрация: 09.02.2013
Сообщений: 165

чё за прикол с radiobutton
Ам даже незнаю что спросить...Создаю вроде как radio а работает как с checkbox.Подскажите почему и што я должен исправить?
<html>

<head>



<meta charset="utf-8" />
	<title>Test</title>
	
<script type="text/javascript" src="jquery.js"></script>
	<script src="script.js" type="text/javascript"></script>

<script type="text/javascript">


var answer={}
		$(document).ready(function(){
			$.ajax({
				type: "GET",  
				url: "test.xml", 
				dataType: "xml", 
				success: vasa	
	 			
		});
		
	
		
		function vasa(xml) { 

		        question=$(xml).find('question')[0].textContent;
				$('.cont').append('<p><label><h4>'+question+'</h4></label></p>');
				TextButton=$(xml).find('TextButton')[0].textContent;
				$('.onki').append('<p><label><h4>'+TextButton+'</h4></label></p>');
				TextButton=$(xml).find('TextButton')[1].textContent;
				$('.lolki').append('<p><label><h4>'+TextButton+'</h4></label></p>');
				
				ResultTextTrue=$(xml).find('ResultTextTrue')[0].textContent;
				
				ResultTextFalse=$(xml).find('ResultTextFalse')[0].textContent;

				var answers = $(xml).find('answer');
 
             		        answers.each(function(index){
 
                                var a = this.textContent;
 
                                var rating = +this.getAttribute('rating');
 
                                $('.cont').append('<p><label><input type="radio">'+a+'</label></p>');
 
                                answer[index] = rating;

				

				
 
                });


	

		}
	
				
	 			
		});
		
			
				
	 			
		
			



function checkAnswer() {
var error = false;
//Прохожу по всем radio(так как создались они)
            var inputs = document.getElementsByTagName('input');
            for(var i = 0; i < inputs.length ; i++){
//проверяю где ставитса отметка
               var checked = inputs[i].checked;
              var right = answer[i] == 1;
               if (checked !== right){
               error=true;
               break;
               }
        }
      
        output.value=error ? ''+ResultTextFalse+'' : ''+ResultTextTrue+'';
		
        return false;
		
		
    }

</script>

</head>
<body>
<form  onsubmit="return checkAnswer()">
	
	 
	 <div  class='cont'></div>
	
	 
    <p><button type="submit"><div class='onki'></div></button> <button type="reset"><div class='lolki'></div></button></p>

    <p><textarea id="output" readonly></textarea></p>

</form>



</body>

</html>
Ответить с цитированием
  #2 (permalink)  
Старый 13.03.2013, 16:51
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ты не написал в чем собственно проблема.
Ответить с цитированием
  #3 (permalink)  
Старый 13.03.2013, 16:53
Профессор
Отправить личное сообщение для Vasy Посмотреть профиль Найти все сообщения от Vasy
 
Регистрация: 09.02.2013
Сообщений: 165

Проблема собственно в том что можно выбирать как в чекбоксах несколько radio а не один как должно быть в radio
Ответить с цитированием
  #4 (permalink)  
Старый 13.03.2013, 16:59
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Vasy,
Чтоб радио объединить в группу - необходимо у данной группы иметь идентичный атрибут name
Ответить с цитированием
  #5 (permalink)  
Старый 13.03.2013, 17:01
Профессор
Отправить личное сообщение для Vasy Посмотреть профиль Найти все сообщения от Vasy
 
Регистрация: 09.02.2013
Сообщений: 165

Deff,
спасибо,нада походу пойти отдохнуть а то я впритык не вижу элементарной ошибки
Ответить с цитированием
  #6 (permalink)  
Старый 13.03.2013, 17:42
Профессор
Отправить личное сообщение для Vasy Посмотреть профиль Найти все сообщения от Vasy
 
Регистрация: 09.02.2013
Сообщений: 165

Ну суть проблемы такова,я немного недопонимаю скорее всего где што будет хранитса.Есть код
<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet href="style.css" type="text/css"?>
<!DOCTYPE test SYSTEM "test.xml">
<test>
<style  border="5px solid black" hight="350px"  width="350px"  padding="20px" margin="50px"></style>
	<questions>
		<single>
		<question>Вопрос</question>
		<answer rating="1"> Да</answer>
		<answer rating="0"> Нет</answer>
		</single>
		<question1>Вопрос</question1>
		<answer1 rating="0"> Да</answer1>
		<answer1 rating="1"> Нет</answer1>
		
	</questions>
		
	
<TextButton>Ответить на вопрос</TextButton>
<TextButton>Стереть ответы</TextButton>
<ResultTextTrue>Ваш ответ верен!</ResultTextTrue>
<ResultTextFalse>Ваш ответ не верен!</ResultTextFalse>
</test>


И код javascript
<!DOCTYPE html>
<html>

<head>



<meta charset="utf-8" />
	<title>Test</title>
	
<script type="text/javascript" src="jquery.js"></script>
	<script src="script.js" type="text/javascript"></script>

<script type="text/javascript">


var answer={}
		$(document).ready(function(){
			$.ajax({
				type: "GET",  
				url: "test.xml", 
				dataType: "xml", 
				success: vasa	
	 			
		});
		
	
		
		function vasa(xml) { 

		        question=$(xml).find('question')[0].textContent;
				$('.cont').append('<p><label><h4>'+question+'</h4></label></p>');
				TextButton=$(xml).find('TextButton')[0].textContent;
				$('.onki').append('<p><label><h4>'+TextButton+'</h4></label></p>');
				TextButton=$(xml).find('TextButton')[1].textContent;
				$('.lolki').append('<p><label><h4>'+TextButton+'</h4></label></p>');
				
				ResultTextTrue=$(xml).find('ResultTextTrue')[0].textContent;
				
				ResultTextFalse=$(xml).find('ResultTextFalse')[0].textContent;

				
				var answers = $(xml).find('answer');
 
             		        answers.each(function(index){
 
                                var a = this.textContent;
 
                                var rating = +this.getAttribute('rating');
 
                                $('.cont').append(' <input size=20 name="group1"  type="radio">'+a+'');
								
                                answer[index] = rating;

				

				
 
                });
				
				question1=$(xml).find('question1')[0].textContent;
				$('.bond').append('<p><label><h4>'+question1+'</h4></label></p>');
				
				var answers = $(xml).find('answer1');
 
             		        answers.each(function(index){
 
                                var a = this.textContent;
 
                               var rating = +this.getAttribute('rating');
 
                                $('.bond').append(' <input size=20 name="group2"  type="radio">'+a+'');
 
                                answer[index] = rating;
				});

				var div = document.getElementById('id')
				var decoration = xml.querySelector('style');
				div.style.border = decoration.getAttribute('border');
				div.style.width = decoration.getAttribute('width'); 
				div.style.height = decoration.getAttribute('hight');
				div.style.padding = decoration.getAttribute('padding');
				div.style.margin = decoration.getAttribute('margin');
	

		}
	
				
	 			
		});
		
			
				
	 			
		
			



function checkAnswer() {
var error = false;
            var inputs = document.getElementsByTagName('input');
            for(var i = 0; i < inputs.length ; i++){
               var checked = inputs[i].checked;
              var right = answer[i] == 1;
               if (checked !== right){
               error=true;
               break;
               }
        }
      
        output.value=error ? ''+ResultTextFalse+'' : ''+ResultTextTrue+'';
		
        return false;
		
		
    }

</script>

</head>
<body>
<form  onsubmit="return checkAnswer()">
	
	 
	 <div id="id">
	
	 <div class='cont' ></div>
	 <div class='bond'></div>
	
	</div>
	
	 
    <p><button type="submit"><div class='onki'></div></button> <button type="reset"><div class='lolki'></div></button></p>

    <p><textarea id="output" readonly></textarea></p>

</form>



</body>

</html>



Скажите пожалуста на момент добавления второго блока ответов и вопросов в
answer[index] = rating;
што будет хранитса,как я понимаю то это же массив и при втором считывании ответов,туда добивтса как-бы второй верный ответ,правильно?тогда почему оно работает не коректно и всегда выдаёт что вы ответили неверно?
Типа у меня есть две разные групы радиобаттонов ответы у обоих задаютса как
rating="1"


И получаетса что у второго вопроса правильного ответа как-бы нет,а у 1 правильный ответ есть.и в answer хранитса ответ только первого вопроса.Как будет коректно задавать правильные ответы.

Или ошибка состоит в самой проверке?

Последний раз редактировалось Vasy, 13.03.2013 в 18:10.
Ответить с цитированием
  #7 (permalink)  
Старый 13.03.2013, 18:52
Профессор
Отправить личное сообщение для Vasy Посмотреть профиль Найти все сообщения от Vasy
 
Регистрация: 09.02.2013
Сообщений: 165

пытался организовать for по индексам,создавая массив ответов и засовывать туда rating ничево из этого хорошего не вышло
Ответить с цитированием
  #8 (permalink)  
Старый 13.03.2013, 19:39
Профессор
Отправить личное сообщение для Vasy Посмотреть профиль Найти все сообщения от Vasy
 
Регистрация: 09.02.2013
Сообщений: 165

я так понимаю у меня беда уже здесь с логикой,правильно понимаю?
Ответить с цитированием
  #9 (permalink)  
Старый 13.03.2013, 20:12
Профессор
Отправить личное сообщение для Vasy Посмотреть профиль Найти все сообщения от Vasy
 
Регистрация: 09.02.2013
Сообщений: 165

Сформулировал правильно вопрос.Скажите как нужно присваивать
answer[index] = rating;

по другому,чтобы при следующем присваивании предыдущие данные оставались в
answer{}
Ответить с цитированием
  #10 (permalink)  
Старый 13.03.2013, 21:51
Профессор
Отправить личное сообщение для Vasy Посмотреть профиль Найти все сообщения от Vasy
 
Регистрация: 09.02.2013
Сообщений: 165

Все уже получилось,пока ехал домой до меня дошло что я баран
Если у кого будет пожая беда то вот простое решение
var answers = $(xml).find('answer');
				
 
             		        answers.each(function(index){
									
                                var a = this.textContent;
								
								
                                var rating = +this.getAttribute('rating');
								
									var inputs = document.getElementsByTagName('input');
										if(inputs.length<2)
											{	
											
                                $('.cont').append(' <input size=20 name="group1"  type="radio">'+a+'');
								            }
											else
											{
								$('.bond').append(' <input size=20 name="group2"  type="radio">'+a+'');
										   }
                                answer[index] = rating;

				

				
 
                });
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача текста в textarea в зависимости от выбора radiobutton AndreiN Общие вопросы Javascript 4 07.02.2016 23:34
убрать checked с radiobutton agert Events/DOM/Window 15 17.08.2013 12:32
Сделать активным radiobutton project1 jQuery 12 10.06.2013 13:26
Передать ID через radiobutton 2-м ссылкам gategw Элементы интерфейса 4 29.11.2012 14:25
как правильно передвать имя radiobutton в функции boris2000 Элементы интерфейса 2 03.08.2010 21:16