2015-07-25 5 views
2

Я нахожу флажки мощным инструментом, но мне сложно оборачивать вокруг себя голову. Я хочу, чтобы клиенты указали, какую кухню они любят (фаст-фуд, итальянский, суши, ..). Позже я хочу спросить рестораны, какие кухни они предлагают, и на основе результата я хочу соответствовать клиентам и ресторанам. Я подумал, что было бы неплохо сохранить все варианты в кухонном массиве []. Это хороший способ сделать это, или вы обычно сохраняете каждый выбор как индивидуальную переменную? Мой HTML выглядит следующим образом:Передача значений флажков в базу данных с помощью JavaScript

<template name="hello"> 
    <form class="main form page"> 
    <div class="form-group"> 
     <label class="control-label" </label> 
    <div class="checkbox"> 
     <label> <input name="kitchen" type="checkbox" class="kitchen" id="italian"> italian</label> 
    </div> 
    <div class="checkbox"> 
     <label> <input name="kitchen" type="checkbox" class="kitchen" id="sushi"> sushi </label> 
    </div> 
    <div class="checkbox"> 
     <label><input name="kitchen" type="checkbox" class="kitchen" id="fastfood"> fast food </label> 
    </div> 
    </form> 
</template> 

Проблема заключается в том, что я не знаю, самый эффективный способ, в котором для хранения данных в базе данных Монго.

Я работаю в метеор. Поэтому мне нужно создать событие шаблона:

Template.hello.events({ 
'submit form': function(e) { 
e.preventDefault(); 

Теперь мне нужно получить все результаты в базе данных. Где кухни - это переменная, которая должна быть добавлена ​​в коллекцию Checkbox.

var kitchens = { 
fastfood: $(e.target).find('[name=fastfood]').val(), 
sushi: $(e.target).find('[name=sushi]').val(), 
italian: $(e.target).find('[name=italian]').val(), 
}; 

kitchens._id = Checkbox.insert(kitchens); 
console.log("added to database"); 

Этот код будет передавать данные в базу данных и создается идентификатор, но я не могу увидеть, если флажок был проверен или нет. Я нашел код, приведенный ниже, чтобы перевести чек на «Да» или «Нет», но я не знаю, как интегрировать это в мой код:

function kitchensChecked(id) { 
var X = document.getElementById(id); 
if (X.checked == true) { 
X.value = "YES"; 
} else { 
X.value = "NO"; 
}; 

Не могли бы вы помочь мне интегрировать этот код или показать мне более плавный способ сохранить результаты checkbox в коллекции Checkbox?

+0

Есть ли способ я могу получить флажок результаты проходят через метод проверки (http://docs.meteor.com/#/full/check), не получив ошибку совпадения? В обоих решениях она всегда дает мне ошибку совпадения, независимо от того, скажу ли я ей ожидать строку, массив или неопределенный. @vinayakj – Julie

ответ

1

Существует css-селектор, называемый :checked, который фильтрует выбор и возвращает только проверенные входы.

var kitchens = { 
fastfood: $(e.target).find('#fastfood:checked').val(), 
sushi: $(e.target).find('#sushi:checked').val(), 
italian: $(e.target).find('#italian:checked').val() 
}; 
+1

Большое спасибо! работает как шарм! – Julie

2

Вот как я общаюсь с флажками в своем приложении. Я бы удалить id поле и вместо того, чтобы иметь value поле флажков на:

<input name="kitchen[]" type="checkbox" class="kitchen" value="italian"> 
<input name="kitchen[]" type="checkbox" class="kitchen" value="sushi"> 
<input name="kitchen[]" type="checkbox" class="kitchen" value="fastfood"> 

Затем используйте pcel:serialize пакет легко получить выбранные элементы:

var formObject = $('form.main').serializeJSON(); 
var checkedItems = formObject.kitchen; // an array containing the checked values 
+0

'если (Meteor.isClient) { Template.kitchen.events ({ 'отправить форму': функция() { вар formObject = $ ('# кухня') serializeJSON(); вар checkboxs = formObject.. checkboxs._id = Checkboxs.insert (checkboxs); } }); } ' с:' Checkboxs = new Mongo.Collection ('checkboxs'); ' Этот код отлично работает. Спасибо за подсказку с пакетом! – Julie

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