2017-12-19 13 views
0

チェックボックスを1回に1つずつチェックしてチェックし、ハードコードなしで繰り返す方法を教えてください。ちょっとしかし、Node.jsのとないのJavaScript Iterate all checkbox in JavaScriptと、このリンクのように:Node.jsチェックボックス反復

だから私は(MySQLを使用して)私のデータベースの内容を表示しようとするんだけど、私はハードコード「req.bodyにしたくありませんチェックボックスは、新しい列がテーブルに追加された場合(チェックボックスはテーブル内の各列)だから私は、Webページのすべてのチェックボックスを繰り返し、チェックされているかどうかを確認する方法を見つける必要があります。そうであれば、それらを一緒に文字列に追加し、それらの列を照会します。下のコードは、Node.jsのPOSTメソッド(チェックボックスがオンになってからサブミットした後)と、もう1つはPug/Jadeコード(JavaScriptテンプレートエンジン)です。

最初に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

私の自身の質問に1ヶ月お待ちしてお待ち申し上げます。以下は、私が持っているコードです。基本的には、送信ボタンがクリックされたとき、チェックボックスがチェックされていることを確認して2つの隠し要素を作成するJavaScript関数を呼び出したときでした。チェックされたチェックボックスの配列と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(); 
       }