流星用户添加表单什么都不做?

时间:2015-08-09 20:08:58

标签: javascript jquery meteor user-accounts

所以我让我自己的用户添加表单,这样只有登录的用户才能添加新表单。这是我的玉:

template(name="userAdd")
.sixteen.wide.column
  h1 Add new user
  form#userAddForm.ui.form
    .field.required
      label(for="username") Username:
      input(type="text" name="username")#username
    .field.required
      label(for="email") Email:
      input(type="email" name="email")#email
    .field.required
      label(for="password") Password:
      input(type="password" name="password")#password
    .field.required
      label(for="realname") Real Name:
      input(type="text" name="realname")#realname
    .field.required
      label(for="bio") Bio:
      textarea(rows="3" name="bio")#bio
    button(type="submit")#usersubmit.ui.button.primary Submit

和Javascript:

Template.userAdd.events({
  'click #usersubmit': function (evt) {
    Accounts.createUser({
      username: $('input #username').val(),
      email: $('input #email').val(),
      password: $('input #password').val(),
      profile: {
        realname: $('input #realname').val(),
        bio: $('input #bio').val()
      }
    })

    Router.go('/')
  }
})

出于某种原因,这只会将我重定向回相同的页面并且不会执行任何操作,甚至在开发控制台中都没有显示。我做错了什么?

1 个答案:

答案 0 :(得分:1)

因为它实际上是在提交表单。您需要停止提交表单。使用以下代码。

Template.userAdd.events({
    'submit form': function(event){
        event.preventDefault();

        Accounts.createUser({
            username: event.target.username.value,
            email: event.target.email.value,
            password: event.target.password.value,
            profile: {
                realname: event.target.realname.value,
                bio: event.target.bio.value
            }
        });

        Router.go('/');
    }
});

请注意,我使用event.target。 inputName .value,这是在Meteor中处理表单数据的最佳实践方法。