2017-12-19 43 views
0

하드 코딩 및 각 상자를 한 번에 하나씩 확인하지 않고 체크 된 체크 상자를 반복하는 방법은 무엇입니까? 이 링크와 비슷하지만 JavaScript가 아닌 Node.js가 있습니다. Iterate all checkbox in JavaScript :Node.js 체크 상자 반복

데이터베이스의 내용을 표시하려고 시도하고 있지만 .checkboxName '테이블에 새 열이 추가되는 경우 (확인란은 지정된 테이블의 각 열임) 모든 확인란에 적용됩니다. 그래서 나는 웹 페이지의 모든 체크 박스를 반복하여 체크 할 것인지를 확인하는 방법을 찾아야한다. 그런 다음 문자열로 함께 추가하고 해당 열을 쿼리합니다. 아래 코드는 Node.js POST 메서드 (체크 박스가 선택되면 제출을 누른 다음)이고 다른 하나는 Pug/Jade 코드 (자바 스크립트 템플릿 엔진, 미안하지만 일반 html이 아닙니다)입니다.

Pug/Jade 파일이 처음에 어떻게 실행되는지 혼란 스러울 때, 또 다른 GET 방법은 Pug/Jade 파일을 열 이름으로 렌더링합니다. 그 GET 방식 /를 POST의 방법 '// 도움이 필요하십니까'라인

Node.js를

app.post('/GetTables', function(req, res){ 
    var columnsRequest = 'DESCRIBE ' + tableName; 
    var columnsList = []; 
    connection.query(columnsRequest, function(err, results, fields) { 
     if(err){ 
      throw err; 
     } 
     for (var index in results) { 
      console.log(results[index].Field); 
      columnsList.push(results[index].Field); 
     } 
    }); 


    //Need help, the next 5 or so lines are non-working ~psuedocode 
    var checkedList = '';  
    req.body.CHECKBOXES.each(function(index, element){ 
     if(CHECKBOX.ischecked(){ 
      checkedList += CHECKBOX.name() + ', ' 
     } 
    }); 


    var mysqlRequest = 'SELECT ' + checkedList + ' FROM ' + tableName; 
    connection.query(mysqlRequest, function(err, results, fields) { 
     if(err){ 
      throw err; 
     } 
     res.render('webPage', {'columnstodisplay': results}); 
    }); 

}); 

퍼그까지 아래 기본적으로 옥

form(method = 'POST', action = '/GetTables', id = 'tableform') 
    fieldset 
     each item in columns 
      //this loop sets up the checkboxes for each of the columns 
      p 
       input(type="checkbox", name=item, value=item) 
       span #{item} 
       br 
     input(type ='submit', value ='Submit') 
사전에

감사합니다!

답변

0

내 자신의 질문에 대한 답변을 기다리는 동안 죄송합니다. 아래 코드는 제가 가지고있는 코드입니다. 본질적으로 내가 한 것은 제출 버튼을 클릭했을 때, 어떤 체크 박스가 체크되어 있는지를보고 두 개의 숨겨진 요소를 만드는 자바 스크립트 함수를 호출했을 때였습니다. 체크 된 체크 박스 배열과 MySQL 쿼리에 배치 할 문자열 (쿼리는 확인 된 열/체크 박스를 묻습니다).

app.post('/GetTables', function(req, res){ 
    var columnsRequest = 'DESCRIBE ' + tableName; 
    var columnsList = []; 
    connection.query(columnsRequest, function(err, results, fields) { 
     if(err){ 
      throw err; 
     } 
     for (var index in results) { 
      console.log(results[index].Field); 
      columnsList.push(results[index].Field); 
     } 
    });  
    //changed the line below**** 
    var mysqlRequest = 'SELECT ' + req.body.checkboxNames + ' FROM ' + tableName; 
    connection.query(mysqlRequest, function(err, results, fields) { 
     if(err){ 
      throw err; 
     } 
     //changed the line below******** 
     res.render('webPageName', {'columns': columnsList, 'rows': results, 'fields': fields, 'recheckboxes':req.body.checkboxArray}); 
    }); 

}); 

퍼그/옥

form(method = 'POST', action = '/GetTables', id = 'tableform') 
    fieldset 
     each item in columns 
      //this loop sets up the checkboxes for each of the columns 
      p 
       input(type="checkbox", name=item, value=item) 
       span #{item} 
       br 
     input(type ='submit', value ='Submit', onclick="sendCBs(document.thisForm, '/gettables')") 

     script. 
      function sendCBs(form, path, method) { 
       var cbNames = ''; 
       var cbArray = []; 
       var count = 0; 
       for (var i = 0; i < form.elements.length; i++) { 
        if (form.elements[i].type == 'checkbox') { 
          if (form.elements[i].checked == true) { 
           cbNames += form.elements[i].value + ', '; 
           cbArray.push(form.elements[i].value); 
           count++; 
          } 
         } 
        } 
        if(count > 0){ 
         cbNames = cbNames.replace(/,\s*$/, ""); //remove the last comma if 1 or more checkboxes selected 
        } 
        else{ 
         return; 
        } 

        method = method || "POST"; //if not specified, method will be post 
        var inputform = document.createElement("form"); 
        inputform.setAttribute("method", method); 
        inputform.setAttribute("action", path); 

        var hiddenField1 = createHiddenInput("checkboxNames", cbNames); 
        var hiddenField2 = createHiddenInput("checkboxArray", cbArray); 

        inputform.appendChild(hiddenField1); 
        inputform.appendChild(hiddenField2); 

        document.body.appendChild(inputform); 
        inputform.submit(); 
       }