Jquery handsontable验证部分不工作,它正在迭代26次,其中相同的代码在另一个页面中工作

Jquery handsontable验证部分不工作,它正在迭代26次,其中相同的代码在另一个页面中工作,jquery,model-view-controller,handsontable,Jquery,Model View Controller,Handsontable,我不明白汤姆,我的密码在哪里?我已经实现了handsontable,除了验证之外,一切都很好,在验证过程中,它会重复多次。但我坚持了25次 enter code here $(document).ready(function () { $('#btnValidateSave').on('click',function () { debugger; $('#HSTable').handsontable('validateCells', function (isPas

我不明白汤姆,我的密码在哪里?我已经实现了handsontable,除了验证之外,一切都很好,在验证过程中,它会重复多次。但我坚持了25次

enter code here
  $(document).ready(function () {
     $('#btnValidateSave').on('click',function () {
     debugger;
    $('#HSTable').handsontable('validateCells', function (isPass) {
        if (isPass) {
            SaveData();
            alert("Saving data");
        }
        else {
            alert("Please enter the data in correctformat");
        }
    });
    //$('#HSTable').handsontable('render');
   });

   $('#btnUpload').click(function () {
     upload();

          })

      });


         function upload()
           {
 var formData = new FormData();
 var totalFiles = document.getElementById("UploadFile").files.length;
 for (var i = 0; i < totalFiles; i++) {
     var file = document.getElementById("UploadFile").files[i];
        formData.append("Document", file);
    }
    $.ajax({
        url: "/BulkUpload/UploadFile",
        type: "POST",
        dataType: "JSON",
        data: formData,
        contentType: false,
        processData: false,
        success: function (result) {
            if (result != null) {
                DataBind(result);
            }
            else
            {

            }
        }
      });
        }


        function DataBind(result) {

     $("#HSTable").handsontable({
    data: result,
     startRows: 100,
    rowHeaders: true,
    colHeaders: ["Agent","Invoice No", "Issue Date", "Passanger",
       "Empno", "ProjectCode", "RequestNo", "RequireDate",
       "AirlineName", "AirLineCode", "Ticket", "Locator", "FlightNO",          "DetpDate",
       "ReturnDate", "ServiceClass", "ServiceType", "TravelType", "TripType", "Sector",
       "OrgnDtn", "Region", "BaseFare", "TotalTax", "ServiceFare", "TotalFare", "Remarks"],
    columns: [
       {data: 'Agent'},
       { data:'InvoiceNo' },
       { data: 'IssueDate' },
       {
           data: 'Passenger',

       },
        {
            data: 'EmpNo',

        },
        {
            data: 'ProjectCode',

        },
        {
            data: 'RequestNo',

        },
       { data:'RequireDate'},
       {data:'AirLineName'},
       { data: 'AirLinecode' },
      { data: 'TicketNo' },
      { data: 'Locator' },
      { data: 'FlightNo' },
      { date: 'DepDate' },
      { date: 'ReturnDate' },
     { data: 'ServiceClass' },
     { data: 'ServiceType' },
     { data: 'TravelType' },
     { data: 'tripType' },
     { data: 'Sector'},
     { data: 'OrgDtn' },
     { data: 'Region' },
     { data: 'BaseFare' },
     { data: 'TotalTax' },
     { data: 'ServiceFee' },
     { data: 'TotalFare' },
     { data: 'Remarks' }

    ],
    colWidths: 85,
       });

      }
       var notEmpty=function(value, callback) {
   if (!value || String(value).length === 0) {
         callback(false);

      }
          else {
    callback(true);
}
大家好,我不明白汤姆,我的密码在哪里?我已经实现了handsontable,除了验证之外,一切都很好,在验证过程中,它会重复多次。但我坚持了25次

enter code here
  $(document).ready(function () {
     $('#btnValidateSave').on('click',function () {
     debugger;
    $('#HSTable').handsontable('validateCells', function (isPass) {
        if (isPass) {
            SaveData();
            alert("Saving data");
        }
        else {
            alert("Please enter the data in correctformat");
        }
    });
    //$('#HSTable').handsontable('render');
   });

   $('#btnUpload').click(function () {
     upload();

          })

      });


         function upload()
           {
 var formData = new FormData();
 var totalFiles = document.getElementById("UploadFile").files.length;
 for (var i = 0; i < totalFiles; i++) {
     var file = document.getElementById("UploadFile").files[i];
        formData.append("Document", file);
    }
    $.ajax({
        url: "/BulkUpload/UploadFile",
        type: "POST",
        dataType: "JSON",
        data: formData,
        contentType: false,
        processData: false,
        success: function (result) {
            if (result != null) {
                DataBind(result);
            }
            else
            {

            }
        }
      });
        }


        function DataBind(result) {

     $("#HSTable").handsontable({
    data: result,
     startRows: 100,
    rowHeaders: true,
    colHeaders: ["Agent","Invoice No", "Issue Date", "Passanger",
       "Empno", "ProjectCode", "RequestNo", "RequireDate",
       "AirlineName", "AirLineCode", "Ticket", "Locator", "FlightNO",          "DetpDate",
       "ReturnDate", "ServiceClass", "ServiceType", "TravelType", "TripType", "Sector",
       "OrgnDtn", "Region", "BaseFare", "TotalTax", "ServiceFare", "TotalFare", "Remarks"],
    columns: [
       {data: 'Agent'},
       { data:'InvoiceNo' },
       { data: 'IssueDate' },
       {
           data: 'Passenger',

       },
        {
            data: 'EmpNo',

        },
        {
            data: 'ProjectCode',

        },
        {
            data: 'RequestNo',

        },
       { data:'RequireDate'},
       {data:'AirLineName'},
       { data: 'AirLinecode' },
      { data: 'TicketNo' },
      { data: 'Locator' },
      { data: 'FlightNo' },
      { date: 'DepDate' },
      { date: 'ReturnDate' },
     { data: 'ServiceClass' },
     { data: 'ServiceType' },
     { data: 'TravelType' },
     { data: 'tripType' },
     { data: 'Sector'},
     { data: 'OrgDtn' },
     { data: 'Region' },
     { data: 'BaseFare' },
     { data: 'TotalTax' },
     { data: 'ServiceFee' },
     { data: 'TotalFare' },
     { data: 'Remarks' }

    ],
    colWidths: 85,
       });

      }
       var notEmpty=function(value, callback) {
   if (!value || String(value).length === 0) {
         callback(false);

      }
          else {
    callback(true);
}
在此处输入代码
$(文档).ready(函数(){
$('btnValidateSave')。在('click',函数(){
调试器;
$(“#HSTable”).handsontable('validateCells',函数(isPass){
如果(isPass){
SaveData();
警报(“保存数据”);
}
否则{
警报(“请以正确格式输入数据”);
}
});
//$(“#HSTable”).handsontable('render');
});
$('#btnUpload')。单击(函数(){
上传();
})
});
函数上传()
{
var formData=new formData();
var totalFiles=document.getElementById(“UploadFile”).files.length;
对于(var i=0;i
})

var EmailValidator=函数(值,回调){
如果(+/.+@.+/.测试(值)){
回调(true);
}
否则{
回调(假);
}
};
函数SaveData(){
变量数据=[{}];
var$container=document.getElementById('#HSTable');
var colHeaderList=$(“#HSTable”).handsontable(“getColHeader”);
var rowHeaderList=$(“#HSTable”).handsontable(“getRowHeader”);
var tableData=$(“#HSTable”).handsontable(“getData”);
var obj=$('#HSTable').handsontable(“getData”);
var ObjBulk=[];
调试器;
//对于(变量i=0;i对于(var i=0;i将emailValidator函数应用于包含电子邮件ID的列

例如:

columns: [
      {data: 'id', type: 'numeric'},
      {data: 'name.first'},
      {data: 'name.last'},
      {data: 'ip', validator: ipValidatorRegexp, allowInvalid: true},
      {data: 'email', validator: emailValidator, allowInvalid: false}
    ]

您可以参考

我没有使用邮件验证程序字段,我在四列中使用NotEmpty验证程序。在按钮单击事件中,我调用了验证函数,它正在工作,但它正在迭代26次,假设我打开了警报窗口n以验证true,26次警报窗口即将到来。好的!您已经在整个系统上应用了验证handsontable,因此它会遍历每个单元格。您只需要对该特定列应用验证。使用afterValidate回调,它将在验证后每行调用一次。validateCells(回调):使用其验证器函数验证所有单元格,并在完成时调用回调。不呈现视图。如果其中一个单元格无效,则将使用“valid”参数启动回调,并将其设置为false-否则将等于true。请尝试一些技巧,如:在handsontable JS文件中,转到其他{//即使找不到验证程序函数也解析回调(可能是第1093行)。删除:cellProperties.valid=true;完成(cellProperties.valid);并添加:实例。_registerTimeout(setTimeout(function(){cellProperties.valid=true;完成(cellProperties.valid);},0);