2016-10-08 2 views
0

HTML에서 모든 양식 필드에는 서버에 제출하기 위해 name 속성이 필요합니다. 하지만 dataTable을 사용하여 모든 데이터와 페이지 매김을 표시했습니다. 목록 체크 박스는 현재 페이지의 데이터를 가져 오지 않고 다음 페이지 또는 이전 페이지의 데이터를 가져 오지 않습니다. 어떻게 체크 박스의 모든 값을 얻을 수 있습니까? 템플릿Django : dataTable의 체크 박스에서 여러 값을 얻는 방법

<input type="checkbox" name="orderId" value="{{ order_id }}" checked> 

및 뷰

:

order_list = request.POST.getlist('orderId') 
+0

'order_list'의 유형이 'list'인지 확인하십시오. 또한 모든 '확인란'입력 또는 현재 페이지의 여러 양식에 대해 단일 양식을 사용하고 있는지 확인해야합니다. 여기서 모든 '체크 박스'입력 필드는 원하는 출력을 위해 단일 형식으로 포함되어야합니다. –

+0

네, 물론 단 하나의 양식. dataTable의 페이지 매김에 이유가 있다고 생각합니다. 예 : 내 테이블에 2 페이지가있는 경우 현재 페이지가 1이고 양식을 제출하면 'order_list'는 페이지 번호 1의 체크 박스 값을 받고 페이지 번호 2의 값은 없습니다 –

+0

맞습니다. 페이지를 탐색 할 때 테이블의 본문에는 현재 페이지의 행만 포함되어 있으므로이 양식에는 현재 페이지의 입력 필드 만 포함됩니다. Jquery 또는 Javascript를 알고있는 경우 문제를 확실히 해결할 수있는 다른 방법을 제안 할 수 있습니다. –

답변

1

당신은 숨겨진 입력 필드 (유형 숨김) 문자열을 함유 사용할 수 (콤마 구분 된 값) 이상이 될 수있다 서버 측에서 문자열로받은 다음 split 메소드를 사용하여 원하는 목록으로 결과를 표시합니다.

<form> 
     <input id="result" type="hidden" name="result"> 
     <!--your data table goes here--> 
    </form> 

    <script> 
    $(document).ready(function(){ 
    var resultarray=[]; 
    $('form input:checkbox').on('change', function(){ 

     var orderValue=$(this).val(); 

    // if string already available then remove(uncheck operation) 
    if(resultarray.indexOf(orderValue)!=-1) 
    { 
     resultarray.splice(resultarray.indexOf(orderValue), 1); 
     } 
    else 
    { 
     //if sting is not available then add(check operation) 
     resultarray.push(orderValue); 
    } 

    var text=""; 
    for(x in resultarray) 
    { 
    text+=x+","; 
    //you may add an extra condition for not adding comma at last element 
    } 
    $("#result").val(text); 
    }); 
}); 

관련 문제