jQuery/CoffeeScript/Rails 不会在我的输入上调用 change()
jQuery/CoffeeScript/Rails doesn't call change() on my input
我有一个带有文本字段的表单,每当用户更改其文本时,我都会尝试执行操作:
<%= form_for @item do |f| %>
<%= f.text_field :title, id: "edit_item_title" %>
<%= f.submit 'Save' %>
<% end %>
在我的咖啡脚本文件中:
$(document).ready ->
$('#edit_item_title').change ->
alert("Changed!")
出于某种原因,不会触发 change()
事件。只是为了表明其他一切都在工作,这里有一些确实有效的代码,使用 keypress
而不是 change
:
$(document).ready ->
$('#edit_item_title').keypress ->
alert("Changed!")
我不能使用 keypress
,因为它不考虑按下删除键的时间,并且我不能使用 keyup
,因为每当按下箭头键时它都会触发。
我对此很陌生。任何解决方法或想法为什么会发生这种情况?谢谢!
更改事件在<input>
失去焦点之前不会触发。从精细规格:
4.10.5.5 常见事件行为
[...]
change
事件在提交值时触发,如果这对控件有意义,或者在控件失去焦点时触发。
因此,只需在<input type="text">
中键入内容不会触发任何更改事件。
如果需要在键入时对键入的内容做出反应,则需要将keyup
、keypress
或keydown
与@value
和键盘事件结合使用。使用哪一个取决于您需要做什么。
各种活动的演示:http://jsfiddle.net/ambiguous/hrrur2LL/2/
当更改事件失去焦点时,它会在输入字段上触发,您应该使用 keyup 并检测 keyCode 并做出相应的响应
$(document).ready ->
skipKeys = [37, 38, 39, 40] # Arrow keys
$('#edit_item_title').keyup (e)->
if (skipKeys.indexOf(e.keyCode) == -1) # To skip keys
alert('ok')
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 从.change()调用window.open时避免弹出阻塞
- 在隐藏值上调用 jQuery .trigger('change') 会破坏与 KNOCKOUT 相关的可观察性
- 每次检测到任何更改时调用函数`.change()`
- 在文本区域的Change上进行AJAX调用以更新数据库
- 如何根据响应调用change-ajaxurl
- 如何在AngularJS ng-click(或ng-change,..)中调用服务函数
- 在调用 ng-change 之前验证复选框
- 当 ng-change 事件发生时,函数不会在角度 js 中调用
- jQuery/CoffeeScript/Rails 不会在我的输入上调用 change()
- 在angularjs ng-change=“chk(query)”中,当键入单词后点击空格时调用函数
- 未调用 AngularJS 模板 ng-change
- 为什么要调用jQuery's unbind('change')方法来触发更改事件
- 如何在AngularJS中调用checkbox change event before checked/unchecke
- 动态调用SELECT上的Change
- Angular的ng-change for select不调用声明的方法
- jQuery:如果我在一个item类上调用.change(),它会被调用多少次?
- 对于第一次使用ng-repeat而不是第二次使用ng-repeat创建的单选按钮,调用Ng-change事件
- ng-change在promise.then中未调用we-ng模型更新
- Angularjs:在change event时,从指令下拉菜单中调用带有param的控制器方法