2013-09-05 2 views
1

Я подумываю о переносе приложения, написанного в jQuery на Backbone, и тестирую несколько частей. У меня возникают проблемы с получением значений формы и я следую различным источникам, которые могут быть устаревшими или разными методами.Получение значений формы в Backbone

Вот что у меня есть, и я прокомментировал основную проблему, которая связывает форму с этим представлением. Но это может быть просто проблема синтаксиса. В частности, строка var inputLongitude=$input.attr('longitude'); не работает. Я пытаюсь получить значение долготы, но просто не работаю. Я также не уверен, что это должно быть e.target или e.currentTarget (или ни одно из них, поскольку работает только jQuery). Любая помощь с фиксацией этого была бы весьма признательна. Как получить значение долготы из моей формы?

// no form tags on this piece 
<input type='text' id='phone' /> 
<input type='text' id='longitude' name='longitude' /> 
<button class='submit-detail'>submit</submit> 

var LocationDetailView = Backbone.View.extend({ 
    events: {'click .submit-detail':'submitModel', 'change input':'input_change'}, 
    initialize: function(){ 
     _.bindAll(this, 'input_change'); 
    }, 
    render: function(){ 
    .... // form is in here as a string 
    }, 
    input_change: function(e){ 
    var $input=$(e.currentTarget); 
    var inputLongitude=$input.attr('longitude'); // this doesn't work and I'm trying to get to work 
    var inputPhone=$input.attr('phone'); 
    var inputPhone=$('#phone').val(); 

    console.log("input was changed" + inputLongitude); // get undefined 
    console.log("input was changed" + inputPhone); // this works fine 

    } 

ТНХ заранее

ответ

3

ввода не имеет ни longitude, ни phone атрибут. Думаю, вам нужно получить значения этих полей.

$("#longitude").val(); //longitude value 
$("#phone").val(); //phone value 
  1. Вы получаете элемент (поле) по его идентификатору. $("#field_id") - создать jquery, обернутый вокруг HTMLElement с id == field_id.
  2. Извлеките его значение, позвонив по телефону val().
+0

thx, похоже, что я предпочел бы ввести данные, эти атрибуты, не так ли? Разве это не более канонический хребет? Я делаю в основном сервер dev, поэтому просто пытаюсь найти лучший способ сделать это. – timpone

+0

@timpone Это не поможет. Эти атрибуты не будут обновляться, когда пользователь изменяет значения в входах. Я рекомендую вам прочитать это http://backbonejs.org/docs/todos.html . Backbone не имеет встроенного двунаправленного привязки данных. Если вы ищете инфраструктуру, которая автоматически связывает входные данные с js-моделями, посмотрите на Knockout. –

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