【问题标题】:How to draw a circle to denote selection in html如何在html中画一个圆圈来表示选择
【发布时间】:2010-07-27 20:27:17
【问题描述】:

环境:jQuery、html

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

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

当他单击这些单词并在他选择另一个选项时切换选择时,您如何模仿在文本周围画一个圆圈。有人可以提供一些关于如何实现这一目标的基本示例吗?

有没有更好的方法来标记学生选择?

【问题讨论】:

  • 该选择是否会出现在某些输入字段中,例如文本或文本区域或页面的其他部分而不是输入字段?
  • 因为可能想要/可能不想要是我们可以控制文本呈现方式的唯一 2 个选项(基于文本等输入字段或任何适合我们需要的内容)

标签: jquery html user-interface


【解决方案1】:

THIS 可能有用。

HERE你可以看一些图书馆的例子。

【讨论】:

    【解决方案2】:

    理想情况下,您应该使用 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,您可以隐藏单选按钮并有效地将其操作转移到它周围的 &lt;label&gt;

    $('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 来设置所有 &lt;label&gt;s 的样式,特别是 .checked 的样式,然后你就拥有了你想要的。

    【讨论】:

      【解决方案3】:

      考虑这样的事情:

      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 标记以反映表单或您想到的任何其他内容。

      如果你愿意,当然可以让答案“不加圈”:

      <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 和 Opera 都不会呈现您漂亮的圆形边框。答案将是……呃,“平方”。

      【讨论】:

      • 此外,这仅适用于启用 JS 的情况,并且不适用于表单上下文。这意味着您 a) 将拒绝一些访问者,并且 b) 将无法以简单、直接的方式保存结果。单选按钮的存在是有原因的,不是吗?
      • a) 问题的标签之一是“jquery” b) 是的,您可以 -- 使用 jquery。您可以按类对其进行序列化,也可以使用实际的单选按钮并为其设置样式。你想做什么,就可以做什么。没关系。虽然我同意使用实际形式更加理智。
      猜你喜欢
      • 2012-11-12
      • 2015-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多