我有一个带onClick事件的按钮和带有onKeyDown事件的文本字段。
Button: onclick="myFunc(3)"
Textfield: onKeyDown="if(event.keyCode==13) myFunc(3);"
如果按下回车键,按钮就会被调用,我不知道为什么。
答案 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;