meteor从checkbox switchChange中检索true / false值

时间:2014-12-29 16:12:38

标签: javascript jquery dom meteor twitter-bootstrap-3

我有一个附加到复选框的事件处理程序。我正在使用自举开关http://www.bootstrap-switch.org/

我试图将状态值(true或false)输入变量,因此我可以将其设置为会话值。

当状态改变时,我可以得到真值或假值(如渲染代码中所示)。但是,我想在事件中获得这个价值。请检查我的x变量。

client.js

Template.myTemplate.rendered = function () {
 $('input[name="questions"]').bootstrapSwitch('state', true, true);
 $('input[name="questions"]').on('switchChange.bootstrapSwitch', function(event, state) {
 console.log(state); // true | false
});

HTML:

<template name="myTemplate">
 <div class="row">
  <input type="checkbox"  name="questions" unchecked> Hobby?
 </div>
 <div class="row">
  <input type="checkbox" name="questions" unchecked> Writer?
 </div>

我试图将渲染代码中console.log(state)中打印的值变为我事件中的变量,这样我就可以将会话值设置为true或false。

Template.myTemplate.events({
'click input': function(event) {
  var x = $(this).is(":checked").val();
  Session.set("statevalue", x);
  console.log(Session.get("statevalue")); // this is not printing out anything
 }
});

6 个答案:

答案 0 :(得分:15)

我认为我有更好的解决方案,而不是直接使用JQuery:

            assertThat(quote.getModels(),
                            hasItem(Matchers.<PhoneModel> hasProperty("makeId",
                                            equalTo(LG_ID))));
            assertThat(quote.getModels(),
                            hasItem(Matchers.<PhoneModel> hasProperty("modelId",
                                            equalTo(NEXUS_4_ID))));
    }

请注意,我建议您使用更改而非点击事件。

答案 1 :(得分:4)

如果您为复选框定义了ID,则可以使用

event.target.checkboxID.checked 

with Template-event。

如果选中,则返回true或false。

答案 2 :(得分:2)

您应该使用模板实例:

Template.myTemplate.events({
'click input': function(event, template) {
  var x = template.$('input').is(":checked").val();
  Session.set("statevalue", x);
  console.log(Session.get("statevalue"));
 }
});

或者也许是'目标':

Template.myTemplate.events({
'click input': function(event) {
  var x = $(event.target).is(":checked").val();
  Session.set("statevalue", x);
  console.log(Session.get("statevalue"));
 }
});

答案 3 :(得分:1)

Template.myTemplate.rendered = function () {
 $('input[name="questions"]').bootstrapSwitch('state', true, true);
 $('input[name="questions"]').on('switchChange.bootstrapSwitch', function(event, state) {
 var x = $(event.target).is(":checked");
 Session.set("statevalue", x);
  console.log(Session.get("statevalue"));
}); 
}

答案 4 :(得分:0)

'click .task_checkbox'(event){

    const target = event.target;
    var isChecked = $("#"+event.target.id).is(":checked").val();
    console.log(isChecked);

},

答案 5 :(得分:0)

event对象已经拥有所需的所有信息。

Template.myTemplate.events({
  'click input': function(event) {
    if (event.target.name === 'questions') {
      Session.set("statevalue", event.target.checked);
      console.log(Session.get("statevalue"));
    }
  }
});