如何在调查表中添加显示/隐藏
How do I add a show/hide to Questionnaire form
如何使每个问题都隐藏起来,直到单击上面的行图像。我基本上想在这个表单中添加一个显示/隐藏div。当每个问题都得到回答时,"下一步"按钮就会弹出。如果用户决定改变主意,点击另一个答案或图像,那么一切都会重新隐藏起来,并再次显示内容。我创建了一个单独的测试表单,它可以工作,但它的功能是我想要的,所以现在我在这里。帮帮我。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
$(window).load(function () {
$('.radio div').on('click', function () {
var $this = $(this),
$parent = $this.parent(),
value = $this.attr('value');
$parent.children().removeClass('active');
$this.addClass('active');
$parent.attr('value', value);
//get all selected radios
var q1 = $('div[name="q1"].active');
var q2 = $('div[name="q2"].active');
var q3 = $('div[name="q3"].active');
var q4 = $('div[name="q4"].active');
//make sure the user has selected all 3
if (q1.length !== 0 && q2.length !== 0 && q3.length !== 0 && q4.length !== 0) {
//now we know we have 3 radios, so get their values
q1 = q1.attr('value');
q2 = q2.attr('value');
q3 = q3.attr('value');
q4 = q4.attr('value');
// activate button
$('#next_button').removeAttr('disabled');
//now check the values to display a different link for the desired
configuration
if (q1 == "AT&T" && q2 == "8GB" && q3 == "Black" && q4 == "Black") {
$('#next_button').val('att 8gb black').click(function () {
window.location.href = 'http://google.com/'
});
} else if (q1 == "AT&T" && q2 == "16GB" && q3 == "White" && q4 == "Black") {
document.getElementById("linkDiv").innerHTML = "<input type=button value=Next
onclick='"window.location.href='http://bing.com/';'">another option</input>";
} else if (q1 == "AT&T" && q2 == "16GB" && q3 == "Black" && q4 == "Black") {
document.getElementById("linkDiv").innerHTML = "<input type=button value=Next
onclick='"window.location.href='http://gmail.com/';'">oops</input>";
} else if (q1 == "AT&T" && q2 == "8GB" && q3 == "White" && q4 == "Black") {
document.getElementById("linkDiv").innerHTML = "<input type=button value=Next
onclick='"window.location.href='http://hotmail.com/';'">can't</input>";
} else if (q1 == "Unlocked" && q2 == "8GB" && q3 == "White" && q4 == "Black") {
document.getElementById("linkDiv").innerHTML = "<input type=button value=Next
onclick='"window.location.href='http://wepriceit.webs.com/';'">red</input>";
} else if (q1 == "Unlocked" && q2 == "8GB" && q3 == "Black" && q4 == "Black") {
document.getElementById("linkDiv").innerHTML = "<input type=button value=Next
onclick='"window.location.href='http://webs.com/';'">orange</input>";
} else if (q1 == "Unlocked" && q2 == "16GB" && q3 == "White" && q4 == "Black") {
document.getElementById("linkDiv").innerHTML = "<input type=button value=Next
onclick='"window.location.href='http://gazelle.com/';'">green</input>";
} else if (q1 == "Unlocked" && q2 == "16GB" && q3 == "Black" && q4 == "Black") {
document.getElementById("linkDiv").innerHTML = "<input type=button value=Next
onclick='"window.location.href='http://glyde.com/';'">blue</input>";
}
}
});
}); //]]>
</script>
</head>
<body class="questionnaire">
<form name="quiz" id='quiz'>
<h4>Choose your series.</h4>
<div class="radio" id="form">
<div style="list-style: none;" type="radio" name="q4" value="iPhone-3GS">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-3GS.png"
/>
</div>
<div style="list-style: none;" type="radio" name="q4" value="iPhone-4">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-4.png"
/>
</div>
<div style="list-style: none;" type="radio" name="q4" value="iPhone-4S">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-4S.png"
/>
</div>
<div style="list-style: none;" type="radio" name="q4" value="iPhone-5">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-5.png"
/>
</div>
</div>
<div style="list-style: none;" type="radio" name="q4" value="iPhone-5">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-5.png"
/>
</div>
</div>
<div style="list-style: none;" type="radio" name="q4" value="iPhone-5">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-5.png"
/>
</div>
</div>
<br />
<br />
<BR>
<h4>What carrier do you have?</h4>
<div class="radio" id="form">
<div style="list-style: none;" name="q1" value="AT&T">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/ATT-logo.png"
/>
</div>
<div style="list-style: none;" name="q1" value="Unlocked">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/Factory-Unlocked.png"
/>
</div>
</div>
<br />
<br />
<BR>
<h4>What is your phones capicity?</h4>
<div class="radio" id="form">
<div style="list-style: none;" type="radio" name="q2" value="8GB">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/8GB.png"
/>
</div>
<div style="list-style: none;" type="radio" name="q2" value="16GB">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/16GB.png"
/>
</div>
</div>
<br />
<br />
<BR>
<h4>What color is your phone?</h4>
<div class="radio" id="form">
<div style="list-style: none;" type="radio" name="q3" value="iPhone-3GS">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-3GS.png"
/>
</div>
<div style="list-style: none;" type="radio" name="q3" value="iPhone-4">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-4.png"
/>
</div>
<div style="list-style: none;" type="radio" name="q3" value="iPhone-4S">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-4S.png"
/>
</div>
<div style="list-style: none;" type="radio" name="q3" value="iPhone-5">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-5.png"
/>
</div>
</div>
<br/>
<br />
<br />
<BR>
<BR>
<div id="linkDiv">
<input id="next_button" type="button" disabled="disabled" value="Next"
/>
</div>
</form>
</body>
</html>
http://jsfiddle.net/urr3B/
首先,您的html中有很多错误。div上有未关闭的标记、相同的id和type属性,但它应该在输入字段中。除此之外,我的想法是将每个问题都封装在div中,并在需要时显示/隐藏它。这是它的代码:
var questions = $(".question");
var showQuestions = function(index) {
for(var i=0; i<questions.length; i++) {
if(i < index) {
questions.eq(i).css("display", "block");
} else {
questions.eq(i).css("display", "none");
}
}
}
for(var i=0; i<questions.length; i++) {
(function(index) {
questions.eq(index).find("div[type='radio']").on("click", function() {
showQuestions(index+2);
})
})(i);
}
showQuestions(1);
这是您页面的完整代码。
<!DOCTYPE html>
<html>
<head>
<style type='text/css'>
.radio div[type='radio'] {
background: url($image) no-repeat #eee;
height:55px;
width:60px;
border:1px solid #DDD;
border-radius:10px;
padding:1px;
float:left;
margin-right:10px;
cursor:pointer
}
.radio div.active{
box-shadow:0 0 2px 1px #00f inset;
}
img {
width: 60px;
height: 55px;
border: 0px solid #666;
background: #fff;
display:block;
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}
.question {
margin: 20px 0 20px 0;
display: none;
clear: both;
}
#linkDiv {
margin: 0;
}
.clear {
clear: both;
}
</style>
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$(window).load(function(){
$('.radio div').on('click', function() {
var $this = $(this),
$parent = $this.parent(),
value = $this.attr('value');
$parent.children().removeClass('active');
$this.addClass('active');
$parent.attr('value', value);
//get all selected radios
var q1=$('div[name="q1"].active');
var q2=$('div[name="q2"].active');
var q3=$('div[name="q3"].active');
var q4=$('div[name="q4"].active');
//make sure the user has selected all 3
if (q1.length !== 0 && q2.length !== 0 && q3.length !== 0 && q4.length !== 0)
{
//now we know we have 3 radios, so get their values
q1=q1.attr('value');
q2=q2.attr('value');
q3=q3.attr('value');
q4=q4.attr('value');
// activate button
$('#next_button').removeAttr('disabled');
//now check the values to display a different link for the desired configuration
if (q1=="AT&T" && q2=="8GB" && q3=="Black" && q4=="Black")
{
$('#next_button').val('att 8gb black').click(function() {
window.location.href='http://google.com/' } );
}
else if (q1=="AT&T" && q2=="16GB" && q3=="White" && q4=="Black")
{
document.getElementById("linkDiv").innerHTML="<input type=button value=Next onclick='"window.location.href='http://bing.com/';'">another option</input>";
}
else if (q1=="AT&T" && q2=="16GB" && q3=="Black" && q4=="Black")
{
document.getElementById("linkDiv").innerHTML="<input type=button value=Next onclick='"window.location.href='http://gmail.com/';'">oops</input>";
}
else if (q1=="AT&T" && q2=="8GB" && q3=="White" && q4=="Black")
{
document.getElementById("linkDiv").innerHTML="<input type=button value=Next onclick='"window.location.href='http://hotmail.com/';'">can't</input>";
}
else if (q1=="Unlocked" && q2=="8GB" && q3=="White" && q4=="Black")
{
document.getElementById("linkDiv").innerHTML="<input type=button value=Next onclick='"window.location.href='http://wepriceit.webs.com/';'">red</input>";
}
else if (q1=="Unlocked" && q2=="8GB" && q3=="Black" && q4=="Black")
{
document.getElementById("linkDiv").innerHTML="<input type=button value=Next onclick='"window.location.href='http://webs.com/';'">orange</input>";
}
else if (q1=="Unlocked" && q2=="16GB" && q3=="White" && q4=="Black")
{
document.getElementById("linkDiv").innerHTML="<input type=button value=Next onclick='"window.location.href='http://gazelle.com/';'">green</input>";
}
else if (q1=="Unlocked" && q2=="16GB" && q3=="Black" && q4=="Black")
{
document.getElementById("linkDiv").innerHTML="<input type=button value=Next onclick='"window.location.href='http://glyde.com/';'">blue</input>";
}
}
});
var questions = $(".question");
var showQuestions = function(index) {
for(var i=0; i<questions.length; i++) {
if(i < index) {
questions.eq(i).css("display", "block");
} else {
questions.eq(i).css("display", "none");
}
}
}
for(var i=0; i<questions.length; i++) {
(function(index) {
questions.eq(index).find("div[type='radio']").on("click", function() {
showQuestions(index+2);
})
})(i);
}
showQuestions(1);
});//]]>
</script>
</head>
<body class="questionnaire">
<form name="quiz" id='quiz'>
<div class="question">
<h4>Choose your series.</h4>
<div class="radio" id="form">
<div type="radio" name="q4" value="iPhone-3GS">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-3GS.png" />
</div>
<div type="radio" name="q4" value="iPhone-4">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-4.png" />
</div>
<div type="radio" name="q4" value="iPhone-4S">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-4S.png" />
</div>
<div type="radio" name="q4" value="iPhone-5">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-5.png" />
</div>
<div type="radio" name="q4" value="iPhone-5">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-5.png" />
</div>
<div type="radio" name="q4" value="iPhone-5">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-5.png" />
</div>
</div>
</div>
<br class="clear" />
<div class="question">
<h4>What carrier do you have?</h4>
<div class="radio" id="form">
<div type="radio" name="q1" value="AT&T">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/ATT-logo.png" />
</div>
<div type="radio" name="q1" value="Unlocked">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/Factory-Unlocked.png" />
</div>
</div>
</div>
<br class="clear" />
<div class="question">
<h4>What is your phones capicity?</h4>
<div class="radio" id="form">
<div type="radio" name="q2" value="8GB">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/8GB.png" />
</div>
<div type="radio" name="q2" value="16GB">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/16GB.png" />
</div>
</div>
</div>
<br class="clear" />
<div class="question">
<h4>What color is your phone?</h4>
<div class="radio" id="form">
<div type="radio" name="q3" value="iPhone-3GS">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-3GS.png" />
</div>
<div type="radio" name="q3" value="iPhone-4">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-4.png" />
</div>
<div type="radio" name="q3" value="iPhone-4S">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-4S.png" />
</div>
<div type="radio" name="q3" value="iPhone-5">
<img width="50px" height="50px" src="http://wepriceit.webs.com/Images/iPhone-5.png" />
</div>
</div>
</div>
<br class="clear" />
<div id="linkDiv">
<input id="next_button" type="button" disabled="disabled" value="Next" />
</div>
</form>
</body>
</html>
var flag = false;
$(window).load(function(){
$('.radio div').on('click', function () {
...........
...........
if(flag)
resetQuestions();
if (q1.length !== 0 && q2.length !== 0 && q3.length !== 0 && q4.length !== 0)
{
flag=true;
.......... } ..............
});});
function resetQuestions(){
//your reset code
}
- 在所有问题都已回答时设置标志
- 每次单击div时都要检查该标志
- 如果发现该标志已设置(即所有问题都已回答),则调用重置函数
- 在重置功能中重置问题
相关文章:
- 在jquery中为显示/隐藏设置cookie
- PHP Javascript显示/隐藏按钮不工作
- 打开/关闭按钮以显示/隐藏内容
- 显示隐藏复选框
- 在bootstrap中显示隐藏特定的li
- JQuery上下文菜单显示/隐藏问题
- JQuery在单击时停止显示/隐藏
- HTML5在提交并显示所需标签后显示隐藏的表单元素
- 使用 jQuery 切换显示/隐藏
- 显示/隐藏有关模型更改的指令内容
- Bootstrap在页面加载缓慢时会立即显示隐藏的模式对话框
- 根据特定条件使用ng显示/ng隐藏来显示/隐藏元素
- 显示/隐藏不起作用
- 使用ng-hide根据条件显示/隐藏按钮
- 仅在第一个结果中显示/隐藏MySQL结果函数
- 显示/隐藏http://ftp链接
- 在显示/隐藏中单击时删除的文本
- 是否可以在不重新渲染的情况下显示/隐藏父对象中的元素
- 将页面内容向左移动时显示/隐藏右侧面板
- 显示/隐藏将不会加载