0

Q1:ユーザーが jQuery Handsontable に入力したデータをサーバーに送信する前に検証する最良の方法は何ですか?

この記事を読みました jQuery Handsontable入力をアップロードする

統合ソリューションはありますか? jquery 検証プラグインに統合するなど、そうでない場合は onbeforechange() メソッドを使用するのはどうですか?

Q2:さらに、100 行のテーブルを開始しましたが、次のコードを使用すると、おそらくユーザーは 50 行しか入力しないでしょう。

$('#btnGo').click(function() { 
  var rowList = $("#example9grid").handsontable("getData"); 
  $('#simple').val(JSON.stringify(rowList)); 
  console.log(rowList); 
});​ 

rowListは50 のデータ行と 50 の空の行を返します。

空の行をすべて削除するには?

4

3 に答える 3

1

A1:Marcinの返信に感謝します。以下のコードを使用して、この問題を解決しました。

onBeforeChange: function (data) {
      for (var i = 0, ilen = data.length; i < ilen; i++) {
            if (data[i][0] > 0) { //if it is not first row
                if(data[i][1]==0){ //if it is the first column
                        //some validate logic here
            }else if(data[i][1]==1){//if it is the second column
                        //some validate logic here
                    }
            }
        }
      };

A2:以下のコードを使用して、空の行を削除しました。

rowList = $("#dataTable").handsontable("getData");
rowList = $.grep(rowList,function(array,index){
            ...write your logic here
});
于 2012-06-11T02:31:13.640 に答える
0

問題を把握しようとしています。「getData」を使用してサーバーに送信する前に空の行を削除しようとしている場合は、単にDOMをトラバースして空の行を削除します。

$('#btnGo').click(function() { 
  $('rowSelector:empty').each(function(){
    $(this).remove(); 
  });
  var rowList = $("#example9grid").handsontable("getData"); 
  $('#simple').val(JSON.stringify(rowList)); 
  console.log(rowList); 
});​
于 2012-06-09T06:23:16.940 に答える
0

A1: 私の意見では、データ サーバー側に$.ajaxリクエストを送信し、代わりにそこで検証を行います。

// your handsontable callback
    // i would use this callback
onChange : function(data){

    $.ajax({
        url : '/validate/',
        data : data,
        dataType : 'json',
        success : function(res){
            if(res.error){
                handleErrors(res.error);
            }else{
                successMsg(res);
            }
        }

    })


}

そうすれば、誰かが自分のデータを手動で追加しようとする場合に備えて、サーバー側に壁を構築する方法があり、検証システムを書き換えることはありません。

また、たとえばphpでjsonデータを次のように送り返すのが最善であることに注意してください。

<?php
// do validating here
    // store if everything is good
    // send back error if thing are not
header('Cache-Control: no-cache, must-revalidate');
header('Content-type: application/json');
echo json_encode($callbackobj);
?>

そうすれば、結果はすでにJavaScriptが読み取るのに最適な形式になっています

A2: 新しいデータ用のスペースを確保するために、そのままにしておきます。エクセルや数値などのプログラムを見ると、テーブルはそのままです。また、読み取り専用で表示している場合は、保存したデータでデータを再構築するだけです。

于 2012-06-09T06:39:25.437 に答える