웹개발자/js_jquery

handsontable number validator, copy paste error fix

wlsufld 2018. 7. 11. 13:26

var numberValidator = function (value, callback) { var tmpStr=''; var valueStr = (''+value).replace(/\s/g, ''); for(var i = 0 ; i<valueStr.length; i++){ tmpStr =valueStr.substring(i, i+1); if( tmpStr == '0' || tmpStr == '1' || tmpStr == '2' || tmpStr == '3' || tmpStr == '4' || tmpStr == '5' || tmpStr == '6' || tmpStr == '7' || tmpStr == '8' || tmpStr == '9' || tmpStr == ',' || tmpStr == '.'){ }else{ callback(false); break; } callback(true); } }; var settings = { data: DataObject, beforeChange: function (changes, source) { if(changes != null){ //maxlength for (i = 0; i < changes.length; i++) { var row = changes[i][0]; //0 변경셀의 row var col = changes[i][1]; //1 변경셀의 col var meta = this.getCellMeta(row, col); var data = changes[i][3]; //3 변경 데이터 //height change if(row>8 && _height1<310 && data != null && data != ''){ _height1=500; tRefriSaleIncome_Handsontable.updateSettings({ height: _height1 }); } //replace \n changes[i][3] = (''+data).replace(/\s+/, '') .replace(/\s+$/g, '') .replace(/\n/g, '') .replace(/\r/g, '') .replace(/(\n|\r\n)/gm, ''); data = changes[i][3]; //maxlength if(col != null && col =="numberColumn" ){ changes[i][3] = (''+data).replace(/,/g, ''); data = changes[i][3]; if((''+data).length>10){ changes[i][3] = (''+data).substring(0, 10); } } } } } ,columns: [     { data: 'numberColumn', type: 'numeric', numericFormat: { pattern: '0,0.000' } , validator : numberValidator     } ] };