Javascript为什么onClick被enter-key调用

时间:2015-10-16 09:26:39

标签: javascript onclick key enter

我有一个带onClick事件的按钮和带有onKeyDown事件的文本字段。

Button: onclick="myFunc(3)"
Textfield: onKeyDown="if(event.keyCode==13) myFunc(3);"

如果按下回车键,按钮就会被调用,我不知道为什么。

1 个答案:

答案 0 :(得分:3)

当您在文本字段中按Enter键时,您会触发表单提交,浏览器会模拟单击表单的第一个提交按钮。

您可以通过阻止按键(不是keydown)事件的默认操作来避免这种情况。



@categories = Category.all.map{|c| [c.name, c.id]}

<%= simple_form_for([:coaches, @programme]) do |f| %>
  <%= f.input :title %>
  <%= f.input :category, as: :select, collection: @categories, selected: f.object.category, input_html: { class: 'wrapper-dropdown-3_1'}, :onchange => 'update_subscategories_div(this.value)', include_blank: "Select a Category" %>
  <%= f.button :submit, "PUBLISH", :class => "btn_style" %>
<% end %>
&#13;
var s = document.querySelector('[type=submit]');
var t = document.querySelector('[type=text]');
var f = document.querySelector('form');

t.addEventListener('keydown', function(event) {
  if (event.keyCode == 13) {
    alert("enter pressed")
  }
});

t.addEventListener('keypress', function(event) {
  if (event.keyCode == 13) {
    event.preventDefault();
  }
});
&#13;
&#13;
&#13;