2012-06-09 5 views
0

Q1: Каков наилучший способ проверки данных, введенных пользователем в jQuery Сопряженный перед отправкой на сервер?Подтвердить данные jQuery Ввод правильного ввода

Я прочитал эту статью Upload jQuery Handsontable input

Есть ли интегрировать решение? и т. д., интегрируясь с плагином проверки jQuery, если нет, как насчет использования метода onbeforechange()?

Q2: Более того, я инициировал таблицу из 100 строк, но это, вероятно, пользователь будет вход только 50 строк, если я использую код ниже:

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

rowList будет возвращать 50 данных строк и 50 пустых строк.

Как удалить все пустые строки?

ответ

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 
}); 
+0

новые версии handsontable переименовали 'onBeforeChange' в 'beforeChange' – forgotpw1

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); 
});​ 
+0

спасибо . Это решение, но если таблица имеет 5 столбцов и одна ячейка пуста, она не работает нормально. Например, $ (this) .remove(); он удалит элемент , если я переписал $ (this) .parent(). remove(); , Он удалит всю строку, даже другой столбец не пуст. – hank511

+0

Используя jQuery.grep (массив, обратный вызов, [инвертировать]), чтобы отфильтровать массив выгрузки, функция обратного вызова может написать логику вашего бизнеса. Это нормально! – hank511

+0

Возможно, это вопрос roockie, но что такое rowSelector: empty? –

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); 
      } 
     } 

    }) 


} 

таким образом у вас есть способ у вас есть стены, построенные на вас сторону серверов упаковывает кто пробует добавить свои собственные данные вручную, и вы не переписывание системы проверки.

Также одно замечание, что лучше всего отправить обратно данные json, например, в php, это что-то вроде этого.

<?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: Я бы просто оставить их там, чтобы места для новых данных. если вы посмотрите на такие программы, как excel или номера, они просто оставят таблицы там. И если ваш просмотр только для чтения, я просто перестрою данные с данными, которые вы сохранили.

+0

Для A1: проверка на стороне сервера хороша, но мой метод проверки не усложняет, поэтому я бы хотел проверить данные на стороне клиента раньше. Для A2: вместо этого я хочу использовать jQuery.grep (array, callback, [invert]) для фильтрации массива upload. – hank511

Смежные вопросы