Ir para o conteúdo
nibbler

[Resolvido] [ Javascript / jquery ] Saltar divs com radio buttons

Mensagens Recomendadas

nibbler    0
nibbler

Boas,

Estou num projecto que é um especie de manual, ou seja existem perguntas, cada pergunta tem opção sim ou não e vão aparecendo mais perguntas conforme a escolha que o utilizador faz.

No entanto começei a mexer à pouco tempo em javascript e jquery e fazendo algumas pesquisas deparei-me com um topic no stackoverflow onde alguem tinha uma questão semelhante à minha mas a unica diferença é que ele utiliza uma select box e eu necessito de botões.

Tentei modificar o código de select box para radio buttons mas não "salta" as divs, continua numa sequência.

Deixo-vos os exemplos:

http://jsfiddle.net/gN9Xg/3/ <- Este é o codigo inicial a funcionar com a select box

http://jsfiddle.net/5rXn7/5/ <- O código que alterei (Apenas alterei os inputs para radio button)

As funções são as seguintes:

function doSubmit(obj)
{
var oQuestion = $(obj).parents(".question").first();
var skipCount = parseInt(oQuestion.find(".skipper").val(), 10);
if (isNaN(skipCount) || skipCount < 0)
 skipCount = 0;
var oNext = oQuestion.next();
for (var i = 0; i < skipCount; i++)
 oNext = oNext.next();
oNext.data("prev_index", oQuestion.index());
oNext.show();
oQuestion.hide();
}
function backToPrev(obj)
{
var oQuestion = $(obj).parents(".question").first();
var index = parseInt(oQuestion.data("prev_index"), 10);
if (isNaN(index) || index < 0)
 oQuestion.prev().show();
else
 $(".question").eq(index).show();
oQuestion.hide();
}

Verifiquei que no entanto se alterar o valor de

if (isNaN(skipCount) || skipCount < 0)
 skipCount = 0;

para

if (isNaN(skipCount) || skipCount < 0)
 skipCount = 1;

ele salta directamente para a div 3.

É possivel isto ser alterado ou necessito de ir por outro caminho ? Se me poderem dar algumas guidelines ficava agradecido.

Desde já agradeço a vossa ajuda.

Editado por Rui Carlos
GeSHi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Devexz    47
Devexz

function doSubmit(obj)
{
var oQuestion = $(obj).parents(".question").first();

//aqui procura-se o valor da class .skipper
  var skipCount = parseInt(oQuestion.find(".skipper").val(), 10);
  //como nao é encontrado entra no if
if (isNaN(skipCount) || skipCount < 0) {

//se nós tivermos um input e esse input tem um valor int o skicount fica com esse valor
 skipCount = $(obj).val();
 if (isNaN(skipCount) || skipCount < 0) {
  skipCount = 0;
 }


}

e o html fica assim ( deixei o select e o radio )

<div class="question" id="question1" >
		 <h2>Question 1</h2>
		 <HR>
		 <p>Are you thirsty? </p>
		 <div class="answer-fields">
			 <div class="input-field ui-grid-a" >
				 <div class="ui-block-a" style="width:80%">
					 <select name="question1.1" class="skipper">
					 <option name="question1.1" ano="1" qid="question1" value="yes" checked/>Yes
 <option name="question1.1" ano="1" qid="question1" value="1" />No
 </select>


 <input type = "radio" name = "question1.1" ano="1" qid="question1" value="yes" onclick="doSubmit(this)">

 <input type = "radio" name = "question1.1" ano="1" qid="question1" value="1" onclick="doSubmit(this)">
 </div>




				 <div class="ui-block-b" style="width:10%">
					 <a data-role="button" data-mini="true" data-inline="true" href="#" class="remove-button" style="display:none;" >X</a>
				 </div>
			 </div>
		 </div>
		 <BR>
		 <div data-role="controlgroup" data-type="horizontal" >
			 <input type=submit id="backbutton" value="Back" onclick="backToPrev(this)">
			 <input type=submit id="button" value="Submit" onclick="doSubmit(this)" >

		 </div>
	 </div>

A funcionar:

http://jsfiddle.net/Devesh/p6ynL/

Editado por Devexz

Ás vezes, mais vale deixar a assinatura em branco.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nibbler    0
nibbler

Boas Devexz ,

Peço desculpa de só responder agora mas não me foi possivel vir cá mais cedo, desde já muito obrigado era mesmo isso e já agora obrigado pelos comments no codigo.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.