Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Html表单Meteor javascript获取变量时出错_Javascript_Html_Meteor_Set_Var - Fatal编程技术网

从Html表单Meteor javascript获取变量时出错

从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"/&

我正在尝试从html字段设置一个变量。当我运行meteor时,它不会编译,但如果单击submit按钮,控制台会显示:

调用方法“submitme”TypeError时出现异常:无法调用未定义的方法“preventDefault”

我真的搞不懂

因此,我的html部分是:

<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);
    }
});