2014-11-17 2 views
0

Мне было интересно, какой самый лучший (самый надежный способ (и?) Самый надежный способ получить пользовательский ввод в метеор. Это Javascript, я знаю, что есть jQuery, поэтому я пришел с двумя решениями персонально:Самый быстрый способ получить пользовательский ввод в метеор

Первый:

в HTML, только вход:

<input id='input1' type='text' /> 

, что я получить с:

Template{(
    'event #input1' : function(){ 
     // event like change or keyup 
     var data = $('#input1').val()... 
     ... 

и т.д ... или ВТОРОЕ:

В HTML, только вход:

<form> 
    <input name='input1' id='input1' type='text' /> 
</form> 

, что я получить с:

Template{(
    'submit form' : function(e){ 
     e.prenventDefault(); //avoid page refresh 
     var data = $(e.target).find('[name=input1]').val()... 
     //Is this faster because it only search the data in the form and not in the whole page ? 
     ... 

Так что вы используете? И почему ? Элемент формы по-прежнему полезен? Только для обработки нескольких входов, более безопасных, быстрее?

+0

В первом варианте я предпочел бы рекомендовать $ (e.currentTarget) .val(), и я думаю, что это самый быстрый способ, но не уверен, поэтому я буду оставлять комментарий – Sindis

+1

С сообщением о передаче в форме вы можете прямо получите значение следующим образом: 'e.target.input1.value'. Не задействовано jQuery. – user3557327

ответ

0

Я бы порекомендовал второй вариант. В первом варианте вы получаете данные, как только они доступны (keyup, change и т. Д.) Для хранения .... где? Если вы хотите внедрить форму WIP (работа в процессе), я настоятельно рекомендую использовать первый подход и сохранить его в локальном хранилище. Не вставляйте его сразу в базу данных.

Имеет смысл, что, когда пользователь предоставил ввод, пользователь подтверждает, что он выполнил редактирование данных и нажал кнопки сохранения. Таким образом, вы сохраняете базу данных один раз. При первом подходе, если вы сохраняете базу данных каждый раз, когда данные меняются, другие клиенты, подписывающиеся на данные, получат множество обновлений и заметят, что происходит что-то странное. Это действительно зависит от того, что вы хотите сделать.

Даже если вы хотите сохранить данные сразу, рассмотрите идею сохранения на localStorage, установите тайм-аут для отправки данных в базу данных, а также попробуйте убедиться, что у вас нет клиентов, которые смотрят этот набор данных.

+0

Спасибо! но на самом деле я также использую if (e.keyCode == 13) (введите ключ), чтобы избежать этой проблемы, как вы сказали, для хранения каждого изменения. Но все же он часто запускает код (if (e.keyCode)] 13), но он находится на клиенте, поэтому я в порядке с этим. Я задавал вопросы о различиях между формами и способом jQuery. Но поскольку user3557327 сказал, что я могу использовать способ события с e.target.value! (даже без элемента формы tje). Поэтому я считаю, что это лучший способ и самый быстрый. Я отвечу на этот вопрос, если в течение нескольких дней не будет другого выбора. –

+0

Вы можете использовать событие 'change'. "if (e.keyCode) == 13" является незначительной операцией. Также я думаю, что мы обсуждаем что-то, что не является проблемой производительности вообще. Я обнаружил, что вы сохраняете каждый keypress в реальном времени, но если нет: это просто вопрос стиля вкуса и кодирования. Вы должны беспокоиться о таких мелочах, как эти. –

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