javascript - Meteor,向单选按钮添加事件会禁用它们

标签 javascript html meteor coffeescript radio-button

我当前有一个表单,其中包含具有以下代码的表单组。

<div class="form-group">
  <label>Role</label>
  <div class="radio">
    <label>
      <input type="radio" name="role-options" id="role-foreman" value="Foreman" checked="">Foreman
    </label>
  </div>
  <div class="radio">
    <label>
      <input type="radio" name="role-options" id="role-super" value="Superintendent">Superintendent
    </label>
  </div>
  <div class="radio">
    <label>
      <input type="radio" name="role-options" id="role-admin" value="Superintendent">Admin
    </label>
  </div>
</div>

这一切都按预期工作,但是一旦我将事件处理程序添加到三个输入,我就会失去表单组的默认功能,即当按下一个单选按钮时,它会成为唯一选定的一个。

目前,我的模板事件处理程序中有以下代码。

"click #role-foreman": (e) ->
    console.log e
    showAddProjects = true

"click #role-super": (e) ->
    console.log e
    showAddProjects = false

"click #role-admin": (e) ->
    console.log e
    showAddProjects = false

我正在寻找的是保留按钮的默认行为,但然后在按下按钮时运行其他代码。

最佳答案

CoffeeScript 具有隐式返回,因此您的事件处理程序会编译为 JavaScript,如下所示:

"click #role-super": function(e) {
  var showAddProjects;
  console.log(e);
  return showAddProjects = false;
}

因此您的事件处理程序返回false。当这种情况发生时,它 stops the event from propagating and prevents the default behavior 。要解决此问题,只需在函数末尾添加一个 return 即可,如下所示:

'click #role-super': (e) ->
  console.log e
  showAddProjects = false
  return

关于javascript - Meteor,向单选按钮添加事件会禁用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27696672/

相关文章:

javascript - 即使网站未在使用,也会在未来的日期/时间执行功能?

javascript - JSON 中位置 1 处的语法错误 : Unexpected token .

javascript - 如何从被调用函数获得响应?

javascript - 错误不断出现在我的保存和加载部分,出现 NAN

javascript - Meteor:如何捕获异步回调函数错误

node.js - 如何构建用于测试的 meteor 应用程序

javascript - MongoDB:确保只有一个文档可以将字段设置为 true

javascript - 使用 eval() 在 IE8 和 IE 7 中不起作用,但在 IE9、FF、Chrome 中起作用?

javascript - 如何在可滚动的 div 中获取对象的相对位置?

html - 删除 html 表的特定 td 元素的边框