2015-01-13 4 views
1

Meter를 사용하여 webapp을 구축하려고합니다. 나는 client.js이 있습니다두 개의 동일한 keydown 이벤트; 하나만 작동합니다.

Template.messages.helpers({ 
    messages: function() { 
     return Messages.find({}, { sort: { time: -1}}); 
    } 

}) 

Template.chats.helpers({ 
    chats: function() { 
     return Chats.find({}, { sort: { time: -1}}); 
    } 

}) 

Template.input.events({ 
    "keydown input#message" : function (event) { 
     if (event.which == 13) { // 13 is the enter key event 
     if (Meteor.user()) 
      var name = Meteor.user().username; 
     else 
      var name = 'Anonymous'; 
     var message = document.getElementById('message'); 

     if (message.value != '') { 
      Messages.insert({ 
      name: name, 
      message: message.value, 
      time: Date.now(), 
      }); 

      document.getElementById('message').value = ''; 
      message.value = ''; 
     } 
     } 
    } 
}); 

Template.inputchat.events({ 
    "keydown inputchat#chatid" : function (event) { 
     if (event.which == 13) { // 13 is the enter key event 
      if (Meteor.user()) 
      var name = Meteor.user().username; 
      else 
      var name = 'Anonymous'; 
      var chat = document.getElementById('chatid'); 

      if (chat.value != '') { 
      Chats.insert({ 
       name: name, 
       title: chat.value, 
       time: Date.now(), 
      }); 

      document.getElementById('chatid').value = ''; 
      chat.value = ''; 
      } 
     } 
    } 
}); 

그리고 내 html 파일에 마지막으로

<template name="Index"> 
<body> 
    {{> input }} 
    {{> messages }} 
    {{> inputchat }} 
    {{> chats }} 
</body> 
</template> 
<template name="input"> 
    <p>Message: <input type="text" id="message"></p> 
</template> 

<template name="inputchat"> 
    <p>Chat name: <input type="text" id="chatid"></p> 
</template> 

<template name="messages"> 
    {{#each messages}} 
    <strong>{{name}}:</strong> {{message}}<br> 
    {{/each}} 
</template> 

<template name="chats"> 
    {{#each chats}} 
    <strong>{{name}}:</strong> {{chat}}<br> 
    {{/each}} 
</template> 

이 models.js의 : 뭔가를 입력하고 공격 할 때

Messages = new Mongo.Collection('messages'); 
Chats = new Mongo.Collection('chats'); 

하는 입력 {{> input}}에 모든 것이 잘 작동합니다. 메시지가 콜렉션 및 템플리트에 추가되고 입력 상자가 비게됩니다.

나는 inputchat에서 타이핑과 타격을 할 때 똑같은 것을 찾고있었습니다. 그러나 아무 일도 일어나지 않습니다. 감사.

답변

1

첫 번째 해결 방법으로 시도

Template.input.events({ 
     "keydown #message" : function (event) { 
     } 
    }) 

사용 IDS

두 번째 솔루션

또한 지금 "keydown input#chatid

+0

내가 입력에 anythong 입력 할 수 없습니다하는 "keydown inpuchat" 교체 입력 찿널은입니다. 같은 ... 그것은 내가 변경 사항을 영향을 미치지 않습니다 이후 inputchat을 "referecing"아니에요? –

+0

ids'Template.input.events ({ "keydown #idInput": function() {} })을 사용하면'# idInput'을 사용하는'input' 단어를 제거하는 것입니다. – Ethaan

+0

감사합니다! 왜 그럴 수 있니? –

관련 문제