문제

기본적으로 선택되어 있는 확인란이 많이 있습니다.내 사용자는 아마도 확인란 중 몇 개(있는 경우)를 선택 취소하고 나머지는 선택된 상태로 둘 것입니다.

양식을 POST로 만드는 방법이 있습니까? ~ 아니다 체크한 것보다는 ~이다 확인됐나요?

도움이 되었습니까?

해결책

다른 ID로 확인란에 숨겨진 입력을 추가하십시오.

<input id='testName' type='checkbox' value='Yes' name='testName'>
<input id='testNameHidden' type='hidden' value='No' name='testName'>

양식을 제출하기 전에 확인 된 조건에 따라 숨겨진 입력을 비활성화합니다.

if(document.getElementById("testName").checked) {
    document.getElementById('testNameHidden').disabled = true;
}

다른 팁

내가 지금까지 가장 좋아했던 솔루션은 확인하지 않은 확인란과 동일한 이름의 숨겨진 입력을 넣는 것입니다. 확인란이 확인되지 않으면 숨겨진 입력이 여전히 성공하고 서버로 전송되지만 확인란이 확인되면 숨겨진 입력을 무시합니다. 이렇게하면 게시 된 데이터의 값이 확인란에서 나올 것으로 예상되는 값을 추적 할 필요가 없습니다.

<form>
  <input type='hidden' value='0' name='selfdestruct'>
  <input type='checkbox' value='1' name='selfdestruct'>
</form>

바닐라 JavaScript를 사용하여 해결했습니다.

<input type="hidden" name="checkboxName" value="0"><input type="checkbox" onclick="this.previousSibling.value=1-this.previousSibling.value">

이 두 입력 요소 사이에 공백이나 라인 브레이크가 없도록주의하십시오!

당신이 사용할 수있는 this.previousSibling.previousSibling "상단"요소를 얻으려면.

PHP를 사용하면 0 (세트가 아님) 또는 1 (세트)의 이름의 숨겨진 필드를 확인할 수 있습니다.

내가 가장 좋아하는 것은 체크 박스가 확인되지 않은 경우 사용될 동일한 이름의 숨겨진 필드를 추가하는 것입니다. 그러나 솔루션은 보일 수있는 것만 큼 쉽지 않습니다.

이 코드를 추가하면 :

<form>
  <input type='hidden' value='0' name='selfdestruct'>
  <input type='checkbox' value='1' name='selfdestruct'>
</form>

브라우저는 실제로 여기에서하는 일에 관심이 없습니다. 브라우저는 두 매개 변수를 서버로 보내며 서버는 무엇을 해야하는지 결정해야합니다.

예를 들어 PHP는 마지막 값을 사용할 것입니다 (참조 : 참조 : 참조 : 중복 HTTP의 권위있는 위치 GET Query 키)

그러나 내가 함께 일한 다른 시스템 (Java를 기반으로)은 주변을 수행합니다. 그들은 당신에게 첫 번째 가치 만 제공합니다. .NET은 대신 두 요소가있는 배열을 제공합니다.

언젠가 Node.js, Python 및 Perl로 이것을 테스트하려고합니다.

이 주위의 일반적인 기술은 각 확인란과 함께 숨겨진 변수를 전달하는 것입니다.

<input type="checkbox" name="mycheckbox" />
<input type="hidden" name="mycheckbox.hidden"/>

서버 측면에서 먼저 숨겨진 변수 목록을 감지하고 숨겨진 각 변수에 대해 해당 확인란 항목이 양식 데이터에 제출되었는지 여부를 확인하려고합니다.

서버 측 알고리즘은 아마도 다음과 같습니다.

for input in form data such that input.name endswith .hidden
  checkboxName = input.name.rstrip('.hidden')
  if chceckbName is not in form, user has unchecked this checkbox

위의 문제는 질문에 정확하게 답하지 않지만 유사한 기능을 달성하는 대체 수단을 제공합니다.

내 코드를 복사하기 만하면 모든 확인란에 숨겨진 필드를 만들 필요가 없습니다. 확인되지 않은 경우 Checkbox의 값이 변경됩니다. value 할당됩니다 0 확인란이 확인되면 할당하십시오 value ~ 안으로 1

$("form").submit(function () {

    var this_master = $(this);

    this_master.find('input[type="checkbox"]').each( function () {
        var checkbox_this = $(this);


        if( checkbox_this.is(":checked") == true ) {
            checkbox_this.attr('value','1');
        } else {
            checkbox_this.prop('checked',true);
            //DONT' ITS JUST CHECK THE CHECKBOX TO SUBMIT FORM DATA    
            checkbox_this.attr('value','0');
        }
    })
})

양식 제출 이벤트에서 일부 JavaScript를 수행 할 수 있습니다. 그게 당신이 할 수있는 전부입니다. 브라우저가 스스로 할 수있는 방법이 없습니다. 또한 JavaScript가없는 사용자를 위해 양식이 중단됩니다. 서버에서 확인란이 있는지 아는 것이 좋습니다. 따라서 게시 된 양식 값에없는 것을 추론 할 수 있습니다 ($_POST PHP에서)는 확인되지 않았습니다.

$('input[type=checkbox]').on("change",function(){
    var target = $(this).parent().find('input[type=hidden]').val();
    if(target == 0)
    {
        target = 1;
    }
    else
    {
        target = 0;
    }
    $(this).parent().find('input[type=hidden]').val(target);
});

<p>
    <input type="checkbox" />
    <input type="hidden" name="test_checkbox[]" value="0" />
</p>
<p>
    <input type="checkbox" />
    <input type="hidden" name="test_checkbox[]" value="0" />
</p>
<p>
    <input type="checkbox" />
    <input type="hidden" name="test_checkbox[]" value="0" />
</p>

확인란의 이름을 제거하면 통과되지 않습니다. test_checkbox 배열 만.

나는 실제로 다음을 할 것입니다.

체크 박스 입력과 동일한 이름으로 숨겨진 입력 필드가있어

<input type="hidden" name="checkbox_name[]" value="0" />
<input type="checkbox" name="checkbox_name[]" value="1" />

그런 다음 게시 할 때 먼저 $ _post 배열에서 선택된 중복 값을 제거하고 각 고유 한 값을 표시하는 Atfer.

  $posted = array_unique($_POST['checkbox_name']);
  foreach($posted as $value){
    print $value;
  }

나는 이것을 게시물에서 얻었다 배열에서 중복 값을 제거하십시오

"서버 접근 방식과 함께 갔다. 잘 작동하는 것 같다 - 감사합니다. - 4thelasers 12 월 1 일 15:19에"나는 소유자에게 추천하고 싶습니다. 인용대로 : JavaScript 솔루션은 서버 핸들러가 어떻게 확인하지 않았는지에 따라 다릅니다 (확인하지 않았습니다)

~와 같은

if(!isset($_POST["checkbox"]) or empty($_POST["checkbox"])) $_POST["checkbox"]="something";

여기의 대부분의 답변은 JavaScript 또는 중복 입력 컨트롤을 사용해야합니다. 때때로 이것은 서버 측에서 전적으로 처리해야합니다.

이 일반적인 문제를 해결하기위한 (의도 된) 키는 양식의 제출 입력 제어라고 생각합니다.

확인란에 대한 검사되지 않은 값을 해석하고 처리하려면 다음에 대한 지식이 필요합니다.

  1. 확인란의 이름
  2. 양식의 제출 입력 요소의 이름입니다

양식이 제출되었는지 확인하여 (값이 제출 입력 요소에 할당 됨) 확인되지 않은 확인란 값은 다음과 같습니다. 추정.

예를 들어:

<form name="form" method="post">
  <input name="value1" type="checkbox" value="1">Checkbox One<br/>
  <input name="value2" type="checkbox" value="1" checked="checked">Checkbox Two<br/>
  <input name="value3" type="checkbox" value="1">Checkbox Three<br/>
  <input name="submit" type="submit" value="Submit">
</form>

PHP를 사용할 때 어떤 체크 박스가 진드기를 감지하는 것은 상당히 사소합니다.

<?php

$checkboxNames = array('value1', 'value2', 'value3');

// Persisted (previous) checkbox state may be loaded 
// from storage, such as the user's session or a database.
$checkboxesThatAreChecked = array(); 

// Only process if the form was actually submitted.
// This provides an opportunity to update the user's 
// session data, or to persist the new state of the data.

if (!empty($_POST['submit'])) {
    foreach ($checkboxNames as $checkboxName) {
        if (!empty($_POST[$checkboxName])) {
            $checkboxesThatAreChecked[] = $checkboxName;
        }
    }
    // The new state of the checkboxes can be persisted 
    // in session or database by inspecting the values 
    // in $checkboxesThatAreChecked.
    print_r($checkboxesThatAreChecked);
}

?>

초기 데이터는 각 페이지로드에서로드 될 수 있지만 양식이 제출 된 경우에만 수정해야합니다. 확인란의 이름은 미리 알려 지므로 개별적으로 통과하고 검사 할 수 있으므로 개별 값이 없으면 확인되지 않았 음을 나타냅니다.

먼저 Sam의 버전을 시도했습니다. 좋은 생각이지만 동일한 이름의 양식에 여러 요소가 있습니다. 이름을 기준으로 요소를 찾는 JavaScript를 사용하는 경우 이제 요소 배열을 반환합니다.

PHP에서 Shailesh의 아이디어를 해결했습니다. 내 코드는 다음과 같습니다.

/* Delete '.hidden' fields if the original is present, use '.hidden' value if not. */
foreach ($_POST['frmmain'] as $field_name => $value)
{
    // Only look at elements ending with '.hidden'
    if ( !substr($field_name, -strlen('.hidden')) ) {
        break;
    }

    // get the name without '.hidden'
    $real_name = substr($key, strlen($field_name) - strlen('.hidden'));

    // Create a 'fake' original field with the value in '.hidden' if an original does not exist
    if ( !array_key_exists( $real_name, $POST_copy ) ) {
        $_POST[$real_name] = $value;
    }

    // Delete the '.hidden' element
    unset($_POST[$field_name]);
}

이 jQuery 블록을 사용하여 제출 시간에 숨겨진 입력을 추가하여 확인되지 않은 모든 확인란에 추가합니다. 마크 업을 어수선하지 않고 나중에 추가 한 확인란에서 잊어 버릴 위험없이 매번 모든 체크 박스에 대해 항상 제출 된 값을 얻을 수 있습니다. 또한 사용중인 백엔드 스택 (PHP, Ruby 등)에도 적합하지 않습니다.

// Add an event listener on #form's submit action...
$("#form").submit(
    function() {

        // For each unchecked checkbox on the form...
        $(this).find($("input:checkbox:not(:checked)")).each(

            // Create a hidden field with the same name as the checkbox and a value of 0
            // You could just as easily use "off", "false", or whatever you want to get
            // when the checkbox is empty.
            function(index) {
                var input = $('<input />');
                input.attr('type', 'hidden');
                input.attr('name', $(this).attr("name")); // Same name as the checkbox
                input.attr('value', "0"); // or 'off', 'false', 'no', whatever

                // append it to the form the checkbox is in just as it's being submitted
                var form = $(this)[0].form;
                $(form).append(input);

            }   // end function inside each()
        );      // end each() argument list

        return true;    // Don't abort the form submit

    }   // end function inside submit()
);      // end submit() argument list

제출하기 전에 Form.Submit Event 및 Reverse Check도 가로 채기도 할 수도 있습니다.

$('form').submit(function(event){
    $('input[type=checkbox]').prop('checked', function(index, value){
        return !value;
    });
});

또한 JavaScript를 사용하여 추가 입력 필드를 게시하는 솔루션도 좋아합니다.

백엔드에 사용되는 것에 따라 백엔드는 어떤 입력이 먼저 진행되는지에 따라 다릅니다.

첫 번째 발생이 사용되는 서버 백엔드 (JSP)의 경우 다음을 수행해야합니다.

  <input type="checkbox" value="1" name="checkbox_1"/>
  <input type="hidden" value="0" name="checkbox_1"/>


마지막 발생이 사용되는 서버 백엔드 (PHP, Rails)의 경우 다음을 수행해야합니다.

  <input type="hidden" value="0" name="checkbox_1"/>
  <input type="checkbox" value="1" name="checkbox_1"/>


모든 발생이 목록 데이터 유형에 저장되는 서버 백엔드의 경우[],array). (Python / Zope)

당신은 당신이 좋아하는 것을 주문할 수 있습니다. 당신은 그냥 입력에서 값을 얻으려고 노력하면 checkbox 속성 유형. 따라서 확인란이 숨겨진 요소 앞에 있고 확인란이 숨겨진 요소 뒤에있는 경우 마지막 인덱스 인 경우 목록의 첫 번째 색인.


모든 발생이 쉼표 (ASP.NET / IIS)와 연결되는 서버 백엔드의 경우, 구분자로 사용하여 문자열을 목록 데이터 유형을 생성하여 문자열을 (분할 / 폭발)해야합니다. ([])

이제 확인란이 숨겨진 요소 앞에있는 경우 목록의 첫 번째 인덱스를 가져 와서 확인란이 숨겨진 요소 뒤에있는 경우 마지막 인덱스를 잡을 수 있습니다.

Backend parameter handling

이미지 소스

나는이 질문이 오래되었고 답이 너무 많지만 어쨌든 페니를 줄 것이다. 내 투표는 일부 사람들이 지적한 것처럼 양식의 '제출'이벤트의 JavaScript 솔루션에 대한 것입니다. 입력을 두 배로 늘리지 않음 (특히 HTML과 혼합 된 PHP 코드가있는 긴 이름과 속성이있는 경우), 서버 측면은 방해가 없으며 (모든 필드 이름을 알고 하나씩 확인해야 함) 모든 채취되지 않은 항목을 가져 오십시오. , 그들에게 0 값을 지정하고 (또는 '확인되지 않은'상태를 표시하는 데 필요한 모든 것을 지정한 다음 'Checked'속성을 true로 변경하십시오.

    $('form').submit(function(e){
    var b = $("input:checkbox:not(:checked)");
    $(b).each(function () {
        $(this).val(0); //Set whatever value you need for 'not checked'
        $(this).attr("checked", true);
    });
    return true;
});

이렇게하면 다음과 같은 $ _post 배열이 있습니다.

Array
(
            [field1] => 1
            [field2] => 0
)
$('form').submit(function () {
    $(this).find('input[type="checkbox"]').each( function () {
        var checkbox = $(this);
        if( checkbox.is(':checked')) {
            checkbox.attr('value','1');
        } else {
            checkbox.after().append(checkbox.clone().attr({type:'hidden', value:0}));
            checkbox.prop('disabled', true);
        }
    })
});

나는이 질문이 3 살이라는 것을 알고 있지만 꽤 잘 작동한다고 생각하는 해결책을 찾았습니다.

$ _post 변수가 할당되어 있는지 확인하고 변수로 저장할 수 있습니다.

$value = isset($_POST['checkboxname'] ? 'YES' : 'NO';

isset () 함수는 $ _post 변수가 할당되었는지 확인합니다. 지정되지 않은 경우 로직으로 확인란이 확인되지 않습니다.

내가 한 일은 조금 달랐습니다. 먼저 확인되지 않은 모든 확인란의 값을 변경했습니다. "0"으로, 모든 것을 선택하여 값이 제출됩니다.

function checkboxvalues(){
  $("#checkbox-container input:checkbox").each(function({ 
    if($(this).prop("checked")!=true){
      $(this).val("0");
      $(this).prop("checked", true);
    }
  });
}

$ _post를 고정하는 것을 선호합니다

if (!$_POST['checkboxname']) !$_POST['checkboxname'] = 0;

게시물에 'checkboxName'value가 없으면 값을 불러 일으켰습니다.

ckeckbox 값의 배열을 생성하고 값이 존재하는지 확인하는 함수를 만들 수 있습니다.

Ajax Actions의 예제 ( ': Checked')는 .val () 대신 사용 된 jQuery입니다.

            var params = {
                books: $('input#users').is(':checked'),
                news : $('input#news').is(':checked'),
                magazine : $('input#magazine').is(':checked')
            };

매개 변수는 true 또는 false에서 값을 얻습니다 ..

확인란은 일반적으로 데이터베이스에 예/아니요, Y/N 또는 1/0 값으로 저장되는 이진 데이터를 나타냅니다.HTML 체크박스는 체크박스가 선택된 경우에만 서버에 값을 보내는 나쁜 특성을 가지고 있습니다!이는 다른 사이트의 서버 스크립트가 양수(선택됨) 또는 음수(선택 해제됨) 값을 저장할 수 있도록 웹 페이지에서 가능한 모든 확인란이 무엇인지 미리 알아야 함을 의미합니다.실제로는 음수 값만 문제입니다(사용자가 이전에 (사전)확인한 값을 선택 취소한 경우 - 서버가 이 이름을 보내야 한다는 것을 미리 알지 못하면 아무 것도 보내지 않을 때 이를 어떻게 알 수 있습니까?)UPDATE 스크립트를 동적으로 생성하는 서버 측 스크립트가 있는 경우 체크된 항목에 Y 값을 설정하고 선택되지 않은(수신되지 않은) 항목에 대해 N 값을 설정하기 위해 모든 체크박스가 무엇을 받아야 하는지 모르기 때문에 문제가 있습니다.

데이터베이스에 'Y' 및 'N' 값을 저장하고 페이지의 선택 및 선택 취소된 확인란을 통해 이를 표현하므로 각 값(확인란)에 'Y' 및 'N' 값이 있는 숨겨진 필드를 추가한 다음 시각적 목적으로만 확인란을 사용합니다. 표현하고 간단한 JavaScript 함수 check()를 사용하여 선택에 따라 if 값을 설정합니다.

<input type="hidden" id="N1" name="N1" value="Y" />
<input type="checkbox"<?php if($N1==='Y') echo ' checked="checked"'; ?> onclick="check(this);" />
<label for="N1">Checkbox #1</label>

하나의 JavaScript onclick 리스너를 사용하고 내 웹 페이지의 각 확인란에 대해 check() 함수를 호출합니다.

function check(me)
{
  if(me.checked)
  {
    me.previousSibling.previousSibling.value='Y';
  }
  else
  {
    me.previousSibling.previousSibling.value='N';
  }
}

이렇게 하면 'Y' 또는 'N' 값이 항상 서버 측 스크립트로 전송되고 업데이트해야 할 필드가 무엇인지 알 수 있으며 체크박스 "on" 값을 'Y'로 변환하거나 수신되지 않은 체크박스를 'N'으로 변환할 필요가 없습니다. '.

메모:공백이나 새 줄도 형제이므로 여기에는 .previousSibling.previousSibling.value가 필요합니다.사이에 공백이 없으면 .previousSibling.value만


이전처럼 onclick 리스너를 명시적으로 추가할 필요는 없습니다. jQuery 라이브러리를 사용하여 페이지의 모든 체크박스에 대한 값을 변경하는 기능과 함께 클릭 리스너를 동적으로 추가할 수 있습니다.

$('input[type=checkbox]').click(function()
{
  if(this.checked)
  {
    $(this).prev().val('Y');
  }
  else
  {
    $(this).prev().val('N');
  }
});

확인란의 문제점은 확인되지 않으면 양식으로 게시되지 않는다는 것입니다. 확인란을 확인하고 양식을 게시하면 양식을 처리하는 데 사용할 수있는 $ _post 변수에서 확인란의 값을 가져옵니다. 확인되지 않은 경우 값이 $ _post 변수에 추가되지 않습니다.

PHP에서는 일반적으로 isset () 체크 박스 요소를 확인 하여이 문제를 해결합니다. 예상되는 요소가 $ _post 변수에 설정되지 않은 경우 확인란이 확인되지 않고 값이 False 일 수 있음을 알고 있습니다.

if(!isset($_POST['checkbox1']))
{
     $checkboxValue = false;
} else {
     $checkboxValue = $_POST['checkbox1'];
}

그러나 동적 양식을 만든 경우 확인란의 이름 속성을 항상 알지 못합니다. 확인란의 이름을 모르는 경우 ISSET 기능을 사용하여 다음과 함께 전송되었는지 확인할 수 없습니다. $ _post 변수.

확인되지 않은 확인란이 전송되지 않으므로 일부 JavaScript로만이를 수행 할 수 있습니다. 따라서 장면 뒤에있는 JavaScript가 필요합니다. JavaScript가 없으면이 작업을 수행 할 수 없습니다.

더 나은 해결 방법이 있습니다. 우선 확인 된 확인란에만 이름 속성을 제공합니다. 그런 다음 클릭하십시오 submit, JavaScript를 통해 function 확인되지 않은 모든 상자를 확인합니다. 그래서 당신이 submit 그것들만이 검색 될 것입니다 form collection 가지고있는 사람들 name 재산.

  //removing name attribute from all checked checkboxes
                  var a = $('input:checkbox:checked');
                   $(a).each(function () {
                       $(this).removeAttr("name");        
                   });

   // checking all unchecked checkboxes
                   var b = $("input:checkbox:not(:checked)");
                   $(b).each(function () {
                       $(this).attr("checked", true);
                   });

이점:여분의 숨겨진 상자를 만들고 조작 할 필요가 없습니다.

@cpburnz는 올바르게 얻었지만 많은 코드를 사용하면 코드가 적은 아이디어가 있습니다.

JS :

// jQuery OnLoad
$(function(){
    // Listen to input type checkbox on change event
    $("input[type=checkbox]").change(function(){
        $(this).parent().find('input[type=hidden]').val((this.checked)?1:0);
    });
});

html (배열 이름을 사용하여 필드 이름 참고) :

<div>
    <input type="checkbox" checked="checked">
    <input type="hidden" name="field_name[34]" value="1"/>
</div>
<div>
    <input type="checkbox">
    <input type="hidden" name="field_name[35]" value="0"/>
</div>
<div>

그리고 php :

<div>
    <input type="checkbox"<?=($boolean)?' checked="checked"':''?>>
    <input type="hidden" name="field_name[<?=$item_id?>]" value="<?=($boolean)?1:0?>"/>
</div>

@vishnu의 답변의 jQuery 버전.

if($('#testName').is(":checked")){
    $('#testNameHidden').prop('disabled', true);
}

jQuery 1.5 이하를 사용하는 경우 .prop () 대신 .attr () 함수를 사용하십시오.

이 솔루션은 @desw의 솔루션에서 영감을 얻었습니다.

입력 이름이 "Form Style"인 경우 하나의 Chekbox를 확인하자마자 Chekbox 값과 어레이 인덱스 연관성을 잃게됩니다. 예를 들어 일부 분야에서 구성된 직원과 같은 것을 삽입하기위한 양식의 경우가 될 수 있습니다.

<input type="text" name="employee[]" />
<input type="hidden" name="isSingle[] value="no" />
<input type="checkbox" name="isSingle[] value="yes" />

직원 3 명을 한 번에 삽입하고 첫 번째 직원과 두 번째 직원은 독신 인 경우 5 원수로 끝납니다. isSingle 배열이므로 예를 들어 데이터베이스에 직원을 삽입하기 위해 3 개의 배열을 통해 한 번에 반복 할 수 없습니다.

쉬운 배열 후 처리로 이것을 극복 할 수 있습니다. 서버 측에서 PHP를 사용하고 있는데 이것을했습니다.

$j = 0;
$areSingles = $_POST['isSingle'];
foreach($areSingles as $isSingle){
  if($isSingle=='yes'){
    unset($areSingles[$j-1]);
  }
  $j++;
}
$areSingles = array_values($areSingles);

따라서이 솔루션은이 질문에 대해 과잉이지만 테이블에서 다른 행에 대해 여러 번 발생한 동일한 확인란이있을 때 도움이되었습니다. 확인란이 표시된 행을 알아야하고 확인란의 상태 (확인/확인되지 않은)도 알고 있어야합니다.

내가 한 일은 체크 박스 입력에서 이름 속성을 제거하고 동일한 클래스를 제공하고 JSON을 데이터와 동등하게 유지하는 숨겨진 입력을 만드는 것이 었습니다.

HTML

 <table id="permissions-table">
    <tr>
	<td>
	    <input type="checkbox" class="has-permission-cb" value="Jim">
	    <input type="checkbox" class="has-permission-cb" value="Bob">
	    <input type="checkbox" class="has-permission-cb" value="Suzy">
	</td>
    </tr>
 </table>
 <input type="hidden" id="has-permissions-values" name="has-permissions-values" value="">

양식 제출에서 실행할 JavaScript

var perms = {};
$(".has-permission-checkbox").each(function(){
  var userName = this.value;
  var val = ($(this).prop("checked")) ? 1 : 0
  perms[userName] = {"hasPermission" : val};
});
$("#has-permissions-values").val(JSON.stringify(perms));

JSON 문자열은 $ _post [ "has-permissions-values"]로 양식으로 전달됩니다. PHP에서 문자열을 배열로 디코딩하면 각 행이있는 연관 배열과 해당 체크 박스에 대한 true/false 값이 있습니다. 그런 다음 걸어 가서 현재 데이터베이스 값과 비교하기가 매우 쉽습니다.

모든 답변은 훌륭하지만 이름이 같은 양식에 여러 개의 확인란이 있고 각 확인란의 상태를 게시하려는 경우. 그런 다음 확인란 (내가 원하는 이름과 관련된 이름)과 함께 숨겨진 필드를 배치 하여이 문제를 해결했습니다.

<input type="hidden" class="checkbox_handler" name="is_admin[]" value="0" />
<input type="checkbox" name="is_admin_ck[]" value="1" />

그런 다음 jQuery 코드 아래로 확인란의 변경 상태를 제어합니다.

$(documen).on("change", "input[type='checkbox']", function() {
    var checkbox_val = ( this.checked ) ? 1 : 0;
    $(this).siblings('input.checkbox_handler').val(checkbox_val);
});

이제 모든 확인란을 변경하면 관련 숨겨진 필드의 값이 변경됩니다. 서버에서 확인란 대신 숨겨진 필드 만 볼 수 있습니다.

이것이 누군가가 이런 유형의 문제를 겪는 데 도움이되기를 바랍니다. 환호 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top