【问题标题】:How to select only 1 checkbox from each paragraph?如何从每个段落中仅选择 1 个复选框?
【发布时间】:2017-08-03 20:29:57
【问题描述】:

我正在处理 html 调查页面,要求从调查的每一行中仅选择 1 个复选框,调查选项可能不同,请参见下面的屏幕和 html:

使用的 HTML

 <div class="firstrow"><div class="srno"><p>1.</p></div><div class="survey"><span>I am satisfied with the quality, reliability and speed of the computer I use.</span></div></div>
    <div class="options">
        <span class="optpadding"><input type="checkbox" name="Strongly agree" value="Strongly agree"><span>Strongly agree</span></span>
        <span class="optpadding"><input type="checkbox" name="Agree" value="Agree"><span>Agree</span></span>
        <span class="optpadding"><input type="checkbox" name="Disagree" value="Disagree"><span>Disagree</span></span>
        <span class="optpadding"><input type="checkbox" name="Strongly disagree" value="Strongly disagree"><span>Strongly disagree</span></span>
    </div>
<div class="firstrow"><div class="srno"><p>2.</p></div><div class="survey"><span>The Software currently installed on my computer is adequate for my job function.</span></div></div>
   <div class="options">
        <span class="optpadding"><input type="checkbox" name="Strongly agree" value="Strongly agree"><span>Strongly agree</span></span>
        <span class="optpadding"><input type="checkbox" name="Agree" value="Agree"><span>Agree</span></span>
        <span class="optpadding"><input type="checkbox" name="Disagree" value="Disagree"><span>Disagree</span></span>
        <span class="optpadding"><input type="checkbox" name="Strongly disagree" value="Strongly disagree"><span>Strongly disagree</span></span>
    </div>

如何使用 jquery 实现这一点,我已经尝试了很多,但当只有 1 个调查问题时取得了成功。当我选择另一个问题复选框时,这将删除以前选择的问题复选框。

Jquery 使用

$(function () {
   $('input:checkbox').click(function () {
      if ($(this).is(':checked')) {
          $('input:checkbox').not(this).prop('checked', false);
       }
   });
})

如何解决这个问题?

【问题讨论】:

  • 为什么不使用单选按钮而不是复选框?
  • 你不能使用单选按钮吗?

标签: javascript jquery html jquery-ui checkbox


【解决方案1】:

注意:-其实最好使用单选按钮,这样就不需要jQuery了。

但是,如果您想使用复选框和 jQuery,请执行以下操作:-

$(function () {
   $('input:checkbox').click(function () {
      if ($(this).is(':checked')) {
          $(this).parent().siblings().children("input:checkbox").prop('checked', false);
       }
   });
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="firstrow"><div class="srno"><p>1.</p></div><div class="survey"><span>I am satisfied with the quality, reliability and speed of the computer I use.</span></div></div>
    <div class="options">
        <span class="optpadding"><input type="checkbox" name="Strongly agree" value="Strongly agree"><span>Strongly agree</span></span>
        <span class="optpadding"><input type="checkbox" name="Agree" value="Agree"><span>Agree</span></span>
        <span class="optpadding"><input type="checkbox" name="Disagree" value="Disagree"><span>Disagree</span></span>
        <span class="optpadding"><input type="checkbox" name="Strongly disagree" value="Strongly disagree"><span>Strongly disagree</span></span>
    </div>
<div class="firstrow"><div class="srno"><p>2.</p></div><div class="survey"><span>The Software currently installed on my computer is adequate for my job function.</span></div></div>
   <div class="options">
        <span class="optpadding"><input type="checkbox" name="Strongly agree" value="Strongly agree"><span>Strongly agree</span></span>
        <span class="optpadding"><input type="checkbox" name="Agree" value="Agree"><span>Agree</span></span>
        <span class="optpadding"><input type="checkbox" name="Disagree" value="Disagree"><span>Disagree</span></span>
        <span class="optpadding"><input type="checkbox" name="Strongly disagree" value="Strongly disagree"><span>Strongly disagree</span></span>
    </div>

【讨论】:

  • 是的,它有效。我必须坚持为什么我必须只使用复选框的设计。尽管使用配给按钮是执行此操作的经典方式。
  • @RishiJagati 很高兴为您提供帮助 :):)
【解决方案2】:

要在多个选项中只选择一个选项,而不是使用checkbox,而是使用radio 并为属于一个类别的所有收音机赋予相同的名称,以便一次只能检查一个收音机。

例如:

<p>Topic 1
  <input type="radio" name="topic1">One
  <input type="radio" name="topic1">Two
</p>

<p>Topic 2
  <input type="radio" name="topic2">One
  <input type="radio" name="topic2">Two
</p>

【讨论】:

    【解决方案3】:

    使用&lt;input type="radio" /&gt; 而不是&lt;input type="checkbox" /&gt;

    但要修复您的 jQuery,请使用 .siblings() 而不是 .not(this)

    【讨论】:

      【解决方案4】:

      试试这个代码100%工作:

      演示: https://output.jsbin.com/ketunanizo

      https://jsbin.com/ketunanizo/edit?html,js,output

      HTML:

      <!DOCTYPE html>
      <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width">
        <title>JS Bin</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
      </head>
      <body>
      <div class="firstrow"><div class="srno"><p>1.</p></div><div class="survey"><span>I am satisfied with the quality, reliability and speed of the computer I use.</span></div></div>
          <div class="options">
              <span class="optpadding"><input type="checkbox" name="Strongly agree" value="Strongly agree"><span>Strongly agree</span></span>
              <span class="optpadding"><input type="checkbox" name="Agree" value="Agree"><span>Agree</span></span>
              <span class="optpadding"><input type="checkbox" name="Disagree" value="Disagree"><span>Disagree</span></span>
              <span class="optpadding"><input type="checkbox" name="Strongly disagree" value="Strongly disagree"><span>Strongly disagree</span></span>
          </div>
      <div class="firstrow"><div class="srno"><p>2.</p></div><div class="survey"><span>The Software currently installed on my computer is adequate for my job function.</span></div></div>
         <div class="options">
              <span class="optpadding"><input type="checkbox" name="Strongly agree" value="Strongly agree"><span>Strongly agree</span></span>
              <span class="optpadding"><input type="checkbox" name="Agree" value="Agree"><span>Agree</span></span>
              <span class="optpadding"><input type="checkbox" name="Disagree" value="Disagree"><span>Disagree</span></span>
              <span class="optpadding"><input type="checkbox" name="Strongly disagree" value="Strongly disagree"><span>Strongly disagree</span></span>
          </div>
      </body>
      </html>
      

      JavaScript:

      <script>
      $(function () {
         $('input:checkbox').click(function () {
            if ($(this).is(':checked')) {
                $(this).closest('.options').find('input:checkbox').not(this).prop('checked', false);
             }
         });
      })
      </script>
      

      【讨论】:

        【解决方案5】:

        试试这个,它肯定会奏效....

        $('input:checkbox').click(function () {
          if ($(this).is(':checked')) {
              $(this).parent().siblings().children().prop('checked', false);
           }
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-28
          • 2017-01-14
          • 2015-09-13
          • 2021-09-11
          • 2012-07-18
          相关资源
          最近更新 更多