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

Meteor user adding form doesn't do anything?

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

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('/')
  }
})

出于某种原因,这只会将我重定向回同一页面而不会执行任何操作,甚至开发控制台中也不会显示任何内容。我做错了什么?

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

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 中处理表单数据的最佳实践方式。