2010-07-27 69 views
3

Env:jQuery,html如何绘制一个圆圈来表示在html中的选择

约翰吃了一顿丰盛的午餐,所以他可能想/今晚可能不想吃东西。

假设你向学生提出这个问题,他将不得不圈出(可能想要也可能不想要)在纸笔测试中回答它。

如何在他点击这些单词时模仿在文本周围绘制一个圆圈,如果他选择另一个选项则切换选择。有人可以提供一些关于如何实现这一目标的基本样本?

是否有更好的方式来标记学生的选择?

+0

是该选择要在喜欢比输入区域其他页面的文本或文本区域或其他地区的一些输入字段? – Sarfraz 2010-07-27 10:14:25

+0

因为可能希望/可能不希望是我们可以控制文本的唯一两个选项(无论是基于文本或任何适合我们需要的输入字段) – user339108 2010-07-27 10:28:47

回答

1

理想情况下,您可以使用HTML单选按钮<input>,因为这些元素具有您正在查找的行为。你可以在这里堆放一些不引人注目的JS和CSS来隐藏实际的单选按钮,并使用其<label>来获得所需的外观。

就拿这个HTML:

<label><input type="radio" name="question-one" value="yes"> Yes</label> 
<label><input type="radio" name="question-one" value="no"> No</label> 

使用下面的不显眼的jQuery,你隐藏的单选按钮和有效的行动转移到<label>周围:

$('input[type=radio]').each(function(){ 
    $(this).parent().click(function(){ 
     $(this).children('input').click(); 
     $('label').removeClass('checked'); 
     $('label:has(input[type=radio]:checked)').addClass('checked'); 
    }); 
}).hide(); 

加入一些这方面的漂亮的CSS样式所有<label> S,特别是那些有.checked,你有你想要的。

+0

将给此尝试 – user339108 2010-07-27 10:33:13

1

考虑这样的事情:

CSS

<style type="text/css"> 
span.answer{ 
    text-decoration: underline; 
    border: none; 
    padding: 2px; 
    cursor: pointer; 
} 

span.answer_selected{ 
    border: 1px solid red; 
    -webkit-border-top-right-radius: 10px; -webkit-border-top-left-radius: 10px; 
    -moz-border-radius-topright: 10px; -moz-border-radius-topleft: 10px; 
    -webkit-border-bottom-right-radius: 10px; -webkit-border-bottom-left-radius: 10px; 
    -moz-border-radius-bottomright: 10px; -moz-border-radius-bottomleft: 10px; 
} 
</style> 

的Javascript

<script type="text/javascript"> 
$(document).ready(function(){ 
    $("div.question > span.answer").click(function() { 
      $(this).siblings(".answer").removeClass("answer_selected"); 
      $(this).addClass("answer_selected"); 
     } 
    ); 
}); 
</script> 

HTML

<div class="question" id="q_1">question 1<br/> 
     <span class="answer" id="a_1">answer one</span>/
     <span class="answer" id="a_2">answer two</span> 
    </div> 

    <div class="question" id="q_2">question 2<br/> 
     <span class="answer" id="a_1">answer one</span>/
     <span class="answer" id="a_2">answer two</span> 
    </div> 

这个想法应该是很容易适应的jQuery插件。您可以更改HTML标记以反映表单或您想要的任何其他内容。

可以让答案是当然的“uncircled”,如果你想:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $("div.question > span.answer").click(function() { 
     if ($(this).hasClass("answer_selected")){ 
      $(this).removeClass("answer_selected");   
     } else { 
      $(this).siblings(".answer").removeClass("answer_selected"); 
      $(this).addClass("answer_selected"); 
     } 
    }); 
}); 
</script> 
  • 警告:CSS3不是最终版本,没有Internet Explorer的戏也不会使你漂亮的圆角边框。答案将是......呃,“平方”。
+0

此外,这将只适用于JS启用,并且不会在表单上下文中工作。这意味着你a)会拒绝一些访问者,并且b)不能以简单,直接的方式保存结果。单选按钮的存在是有原因的,不是吗? – You 2010-07-27 14:49:10

+0

a)其中一个问题的标签是“jquery”b)是的,你可以 - 使用jquery。您可以按课程序列化它或使用实际的单选按钮并对它们进行设计。你想做什么,就可以做什么。这并不重要。尽管我同意使用实际的形式更为理智。 – Greg 2010-07-27 15:23:53