Если вам приходится работать с файлами, поступающими из Excel, с символами новой строки в ячейках, есть и решение.
Большим недостатком этого способа является то, что точки с запятой или двойные кавычки в строках не допускаются.
Я предпочитаю идти без точек с запятой
if file.respond_to?(:read)
csv_contents = file.read
elsif file_data.respond_to?(:path)
csv_contents = File.read(file.path)
else
logger.error "Bad file_data: #{file_data.class.name}: #{file_data.inspect}"
return false
end
result = "string"
csv_contents = csv_contents.force_encoding("iso-8859-1").encode('utf-8') # In my case the files are latin 1...
# Here is the important part (Remove all newlines between quotes):
while !result.nil?
result = csv_contents.sub!(/(\"[^\;]*)[\n\r]([^\;]*\")/){$1 + ", " + $2}
end
CSV.parse(csv_contents, headers: false, :row_sep => :auto, col_sep: ";") do |row|
# do whatever
end
Для меня решение отлично работает, если вы имеете дело с большими файлами, у вас могут возникнуть проблемы с ним.
Если вы хотите использовать без кавычек, просто замените точку с запятой в регулярном выражении кавычками.
Попробуйте
$(document).ready(function() {
$("#form1").submit(function() {
$("#txt1").val("123456");
$("#form1").validate({
rules: {
txt1: {
maxlength: 5
}
}
});
});
});
Таким образом, ваш обработчик событий отправки будет запускать проверку.
Вы можете использовать обратный вызов beforeSubmit
для установки значений:
$(function() {
$('#form1').validate({
rules: {
txt1: { maxlength: 5 }
},
beforeSubmit: function(arr, $form, options) {
$('#txt1').val('123456');
return true;
}
});
});