Насчет datalist - не знаю че эт такое. Насчет отправки - нужно тормозить событие, так как браузер по нажатию на Enter отсылает форму - это его дефолтное действие. Странно что это срабатывает только на последнем поле. Пробуй return false либо event.preventDefault().
Вместо кучи кода лучше что-то вроде:
var $inputs = $form.find('input:not([type="hidden"]),select,textarea');
$inputs.on('keydown', function(event) {
if (isEnter(event)) {
var $next = $inputs.eq($inputs.index(this) + 1);
next.focus();
event.preventDefault();
}
});
var $submit = $form.find('[type="submit"]');
$submit.on('keydown', function(event) {
if (isEnter(event))
this.form.submit();
});