html 그룹에서 하나의 확인란 만 선택 목적으로는 그렇지 않습니다. 사용자가 두 옵션 중 하나

그렇다면 사용자가 하나의 확인란 만 선택하도록 허용하려면 어떻게해야합니까?

라디오 버튼이 “이상적”이라는 것을 알고 있지만 제 목적으로는 그렇지 않습니다.

사용자가 두 옵션 중 하나 또는 둘 중 하나만 선택해야하는 필드가 있습니다. 문제는 내 사용자가 옵션 선택을 취소 할 수 있어야한다는 것입니다. 여기에서 그룹을 선택하면 옵션을 선택해야하므로 라디오 버튼이 실패합니다.

나는 php를 통해 정보의 유효성을 검사 할 것이지만, 그들이 그것을 제공하고 싶다면 여전히 사용자를 하나의 답변으로 제한하고 싶습니다.



답변

이 스 니펫은 다음을 수행합니다.

  • 라디오 버튼과 같은 그룹화 허용
  • 라디오처럼 행동
  • 모두 선택 취소 허용
// the selector will match all input controls of type :checkbox
// and attach a click event handler 
$("input:checkbox").on('click', function() {
  // in the handler, 'this' refers to the box clicked on
  var $box = $(this);
  if ($box.is(":checked")) {
    // the name of the box is retrieved using the .attr() method
    // as it is assumed and expected to be immutable
    var group = "input:checkbox[name='" + $box.attr("name") + "']";
    // the checked state of the group/box on the other hand will change
    // and the current value is retrieved using .prop() method
    $(group).prop("checked", false);
    $box.prop("checked", true);
  } else {
    $box.prop("checked", false);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


<div>
  <h3>Fruits</h3>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[1][]" />Kiwi</label>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[1][]" />Jackfruit</label>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[1][]" />Mango</label>
</div>
<div>
  <h3>Animals</h3>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[2][]" />Tiger</label>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[2][]" />Sloth</label>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[2][]" />Cheetah</label>
</div>

답변

change()확인란의 상태가 변경 될 때 이벤트가 발생하도록 핸들러 를 바인딩하고 싶습니다 . 그런 다음 핸들러를 트리거 한 체크 박스를 제외한 모든 체크 박스를 선택 취소합니다.

$('input[type="checkbox"]').on('change', function() {
   $('input[type="checkbox"]').not(this).prop('checked', false);
});

여기 바이올린이 있습니다


그룹화의 경우 “그룹”확인란이 모두 형제 인 경우 :

<div>
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
</div>
<div>
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
</div>
<div>
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
</div>

다음과 같이 할 수 있습니다.

$('input[type="checkbox"]').on('change', function() {
   $(this).siblings('input[type="checkbox"]').prop('checked', false);
});

여기 또 다른 바이올린이 있습니다


체크 박스가 다음과 같은 다른 속성으로 그룹화 된 경우 name:

<input type="checkbox" name="group1[]" />
<input type="checkbox" name="group1[]" />
<input type="checkbox" name="group1[]" />

<input type="checkbox" name="group2[]" />
<input type="checkbox" name="group2[]" />
<input type="checkbox" name="group2[]" />

<input type="checkbox" name="group3[]" />
<input type="checkbox" name="group3[]" />
<input type="checkbox" name="group3[]" />

다음과 같이 할 수 있습니다.

$('input[type="checkbox"]').on('change', function() {
    $('input[name="' + this.name + '"]').not(this).prop('checked', false);
});

여기 또 다른 바이올린이 있습니다


답변

라디오 버튼이 이상적입니다. 기본적으로 선택되는 세 번째 “둘 다 아님”옵션 만 있으면됩니다.


답변

순수한 JS를 기반으로 한 이에 대한 몇 가지 답변이 이미 있지만 그중 어느 것도 내가 원하는만큼 간결하지 않습니다.

다음은 이름 태그 (라디오 버튼과 마찬가지로)와 몇 줄의 자바 스크립트 사용을 기반으로 한 솔루션입니다.

function onlyOne(checkbox) {
    var checkboxes = document.getElementsByName('check')
    checkboxes.forEach((item) => {
        if (item !== checkbox) item.checked = false
    })
}
<input type="checkbox" name="check" onclick="onlyOne(this)">
<input type="checkbox" name="check" onclick="onlyOne(this)">
<input type="checkbox" name="check" onclick="onlyOne(this)">
<input type="checkbox" name="check" onclick="onlyOne(this)">

답변

$("#myform input:checkbox").change(function() {
    $("#myform input:checkbox").attr("checked", false);
    $(this).attr("checked", true);
});

이것은 양식의 여러 확인란에 대해 작동합니다. 그룹에 속하지 않는 다른 사람이있는 경우 선택기를 해당 입력으로 설정합니다.


답변

내가 선호하는 간단한 HTML 및 JavaScript 솔루션은 다음과 같습니다.

// js 함수를 사용하여 한 번에 하나의 주중 확인란 만 확인할 수 있습니다.

function checkOnlyOne(b){

var x = document.getElementsByClassName('daychecks');
var i;

for (i = 0; i < x.length; i++) {
  if(x[i].value != b) x[i].checked = false;
}
}


Day of the week:
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Monday" />Mon&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Tuesday" />Tue&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Wednesday" />Wed&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Thursday" />Thu&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Friday" />Fri&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Saturday" />Sat&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Sunday" />Sun&nbsp;&nbsp;&nbsp;<br /><br />

답변

이 코드가 도움이되기를 바랍니다.

$(document).ready(function(){
$('.slectOne').on('change', function() {
   $('.slectOne').not(this).prop('checked', false);
   $('#result').html($(this).data( "id" ));
   if($(this).is(":checked"))
   	$('#result').html($(this).data( "id" ));
   else
   	$('#result').html('Empty...!');
});
});
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

</head>
<body>
<input type="checkbox" class="slectOne" data-id="1 selected"/>
<input type="checkbox" class="slectOne" data-id="2 selected"/>
<input type="checkbox" class="slectOne" data-id="3 selected"/>
<input type="checkbox" class="slectOne" data-id="4 selected"/>
<input type="checkbox" class="slectOne" data-id="5 selected"/>
<input type="checkbox" class="slectOne" data-id="6 selected"/>
<input type="checkbox" class="slectOne" data-id="7 selected"/>
<input type="checkbox" class="slectOne" data-id="8 selected"/>
<input type="checkbox" class="slectOne" data-id="9 selected"/>
<input type="checkbox" class="slectOne" data-id="10 selected"/>
<span id="result"></span>
</body>
</html>

작업 링크 여기를 클릭하십시오