2016-01-23 30 views
2

我想從html字段設置一個var。當我運行的流星,它不與任何錯誤編譯,但如果點擊提交按鈕,控制檯說:錯誤從Html窗體獲取Var流星javascript

Exception while invoking method 'submitme' TypeError: Cannot call method 'preventDefault' of undefined

我真的不知道這一點......

所以我的HTML部分是:

<template name="status"> 
    <form id="status"> 
     <input id="status" type="text" name="status"/> 
     <input type="submit" id="submit"/> 
    </form> 

</template> 

事件的JavaScript部分:

submitme: function(event){ 


      event.preventDefault(); 

      var statusvar = document.getElementById("status").value; 




       alert("Submitted!"); 
       Meteor.users.update({ 
        _id: this.userId 
       }, { 

        $set: 
         { 

         'status': statusvar 
         } 
        }); 





     }, 

最後編號: 已修復!下面

助手發佈:

Template.status.events({ 
    'submit' : function(event) { 
     event.preventDefault(); //prevent page refresh  
     var statusvar = document.getElementById("status").value; 
     alert("Submitted!"); 
     Meteor.call('submitme', statusvar); 
    } 
}); 

這沒有奏效。 I替換爲:

Template.status.events({ 

    'submit' : function(event) { 
     event.preventDefault(); //prevent page refresh 



     var statusvar = event.target.status.value; 


     alert("Submitted!"); 
     Meteor.call('submitme', statusvar); 
    } 
}); 

它現在的作品..! :)

回答

2

這裏有幾個問題。 Meteor.call()應該只對服務器端代碼進行調用;您不能嘗試從submitme函數訪問document,也不需要submitme內的event.preventDefault()(並且您沒有傳遞任何內容,因此無法訪問event)。改造你的代碼是這樣的:

//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中提取的值,然後該變量傳遞給叫submitme服務器端流星方法。

+0

Thankyou ..現在錯誤沒有出現在控制檯上,但狀態變爲空。 「status」:null –

+0

在瀏覽器中使用javascript控制檯來驗證'document.getElementById()'是否正常工作,並在te服務器端添加一個'console.log()'以驗證該值是否正確傳遞。 –

+0

像這樣記錄statusvar:console.log(statusvar)在控制檯中返回undefined ... –