从Html表单Meteor javascript获取变量时出错
我正在尝试从html字段设置一个变量。当我运行meteor时,它不会编译,但如果单击submit按钮,控制台会显示: 调用方法“submitme”TypeError时出现异常:无法调用未定义的方法“preventDefault” 我真的搞不懂 因此,我的html部分是:从Html表单Meteor javascript获取变量时出错,javascript,html,meteor,set,var,Javascript,Html,Meteor,Set,Var,我正在尝试从html字段设置一个变量。当我运行meteor时,它不会编译,但如果单击submit按钮,控制台会显示: 调用方法“submitme”TypeError时出现异常:无法调用未定义的方法“preventDefault” 我真的搞不懂 因此,我的html部分是: <template name="status"> <form id="status"> <input id="status" type="text" name="status"/&
<template name="status">
<form id="status">
<input id="status" type="text" name="status"/>
<input type="submit" id="submit"/>
</form>
</template>
最后
Template.status.events({'submit' : function(event) {
Meteor.call('submitme');
event.preventDefault(); //prevent page refresh
}
编辑:
修正
下面的助手发布了:
Template.status.events({
'submit' : function(event) {
event.preventDefault(); //prevent page refresh
var statusvar = document.getElementById("status").value;
alert("Submitted!");
Meteor.call('submitme', statusvar);
}
});
这不起作用。
我将其替换为:
Template.status.events({
'submit' : function(event) {
event.preventDefault(); //prevent page refresh
var statusvar = event.target.status.value;
alert("Submitted!");
Meteor.call('submitme', statusvar);
}
});
它现在起作用了……!:) 这里有一些问题。call()应该只调用服务器端代码;您无法尝试从
submitme
函数访问文档
,也不需要submitme
中的event.preventDefault()。修改代码如下:
//THIS MUST BE ON THE SERVER SIDE
submitme: function(statusvar) {
Meteor.users.update({
_id: this.userId
}, {
$set: {
'status': statusvar
}
});
},
//CLIENT SIDE
Template.status.events({
'submit' : function(event) {
event.preventDefault(); //prevent page refresh
var statusvar = document.getElementById("status").value;
alert("Submitted!");
Meteor.call('submitme', statusvar);
}
});
事件函数将从HTML中提取该值,然后将该变量传递给服务器端Meteor方法
submitme
Thankyou。。现在,该错误不会出现在控制台上,但状态变量变为null。“状态”:Null使用浏览器中的javascript控制台验证文档.getElementById()
是否正常工作,并在te服务器端添加控制台.log()
,以验证值是否正确传递。像这样记录statusvar:console.log(statusvar)返回控制台中未定义的值。。。
//THIS MUST BE ON THE SERVER SIDE
submitme: function(statusvar) {
Meteor.users.update({
_id: this.userId
}, {
$set: {
'status': statusvar
}
});
},
//CLIENT SIDE
Template.status.events({
'submit' : function(event) {
event.preventDefault(); //prevent page refresh
var statusvar = document.getElementById("status").value;
alert("Submitted!");
Meteor.call('submitme', statusvar);
}
});