Meteor应用程序中的奇怪JQuery行为

时间:2015-12-25 13:56:36

标签: jquery meteor

我的流星应用程序有一个奇怪的问题 - 我在.js文件中有两个方法,假设要将数据插入数据库,这里它们是:

// add new hobby
Template.new_hobby.events({
  'submit form': function(event){
      event.preventDefault();
      var id = $('[name=id]').val();
      var title = $('[name=title]').val();
      var body = $('[name=body]').val();
      var image = $('[name=imagepath]').val();
      console.log("client has id: "+id);
      Meteor.call('new_hobby', id, title, body, image, function (error) {
          if (error)
              console.log(error.reason);
          else {
              $('[name=id]').val('');
              $('[name=title]').val('');
              $('[name=body]').val('');
              $('[name=imagepath]').val('');
          }
      });         
  }
});     

// add new fact
Template.new_fact.events({
  'submit form': function(event){
      event.preventDefault();
      var id = $('[name=id]').val();
      var title = $('[name=title]').val();
      var body = $('[name=body]').val();
      var image = $('[name=imagepath]').val();
      console.log("client has id: "+id);
      Meteor.call('new_fact', id, title, body, image, function (error) {
          if (error)
              console.log(error.reason);
          else {
              $('[name=id]').val('');
              $('[name=title]').val('');
              $('[name=body]').val('');
              $('[name=imagepath]').val('');
          }
      });
  }
}); 

问题在于 - Template.new_hobby.events中的函数不会读取输入字段的值,无论Template.new_fact.events中的函数是否相同。他们有完全相同的html模板:

<template name="new_hobby">
  <form>
    <p class="lead">New Hobby!</p>
    <p>Id: <input type="text" name="id" required></p>
    <p>Title: <input type="text" name="title" required></p>
    <p>Body: <input type="text" name="body" required></p>
    <p>Image path: <input type="text" name="imagepath" required></p>
    <p><input type="submit" value="Submit Hobby"></p>
  </form>
</template> 

<template name="new_fact">
  <form>
    <p class="lead">New Fact!</p>
    <p>Id: <input type="text" name="id" required></p>
    <p>Title: <input type="text" name="title" required></p>
    <p>Body: <input type="text" name="body" required></p>
    <p>Image path: <input type="text" name="imagepath" required></p>
    <p><input type="submit" value="Submit Fact"></p>
  </form>
</template>  

但我无法弄清问题是什么。在我制作Meteor方法将数据插入数据库后出现了这个问题。但由于其中一个功能确实有效,我认为其他地方存在问题。我将不胜感激任何帮助!!在此先感谢大家和圣诞快乐!

PS:我在这里还有另一个未回答的问题:Dynamic Meteor Templates所以,如果你觉得你不能帮我解决这个问题,请看看这个问题!

1 个答案:

答案 0 :(得分:1)

您可以使用以下值获取值:event.target.title.value event.target.body.value等。不需要使用jQuery。