javascript - 输入 JS 绑定(bind)函数在重写后不运行

标签 javascript jquery

我目前正在尝试将输入的所有功能绑定(bind)到文档,因为我正在使用 AJAX 重新加载输入。我已经试过了,但这很奇怪,因为它不再起作用了:

let val = jQuery("input#val");
jQuery(document).on('keypress', val, function (e) {
    if (8 !== e.which && 0 !== e.which && (e.which < 48 || e.which > 57)) return !1
});
jQuery(document).on('keyup', val, function () {
    jQuery(this).val(function (e, t) {
        return t.replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ".")
    })
});
jQuery(document).on('bind', val, function (e) {
    e.preventDefault()
});
jQuery(document).on('focus', val, function () {
    jQuery(this).parent().addClass("has-focus");
}).blur(function () {
    jQuery(this).parent().removeClass("has-focus");
});

我做错了什么?

最佳答案

当使用委托(delegate)事件处理程序时,选择器参数需要是一个字符串,而不是您当前使用的 jQuery 对象。

请注意在下面的示例中,在 document.ready 事件处理程序中使用了 $ 别名,它允许您通过更简洁的 保留对 jQuery 的引用>$ 变量。

最后,检查 blur 事件是否按预期工作,因为您将其附加到 document,而不是 input。我也更新了委托(delegate)事件的答案。试试这个:

jQuery(function($) {
  let val = 'input#val'; // this needs to be a string

  $(document).on('keypress', val, function(e) {
    if (8 !== e.which && 0 !== e.which && (e.which < 48 || e.which > 57)) return !1
  });

  $(document).on('keyup', val, function() {
    $(this).val(function(e, t) {
      return t.replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ".")
    })
  });

  $(document).on('bind', val, function(e) {
    e.preventDefault()
  });

  $(document).on('focus', val, function() {
    $(this).parent().addClass("has-focus");
  });

  $(document).on('blur', val, function() {
    $(this).parent().removeClass("has-focus");
  });
});

关于javascript - 输入 JS 绑定(bind)函数在重写后不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57303950/

相关文章:

javascript - 当我通过 Vue Router 导航时,我丢失了元素的内容

javascript - 如何在socket.io中的断开事件上获取断开连接的客户端的套接字ID

javascript - 如何从数组中删除某些元素到新数组中,并将不重复的元素保留在具有相同数组长度的相同位置

javascript - 将 id 分配给单个列中存在的两个元素

javascript - Bootstrap 标题和主体的行在 Bootstrap 响应表中未正确对齐

jquery - 如何使用jquery计算宽度和边距

javascript - 文本框值未更新

javascript - ionic 如何停止后退按钮操作而不转到上一个状态或屏幕?

javascript - onclick 密码警报,同时还有 onclick 打印

jquery - Ajax beforeSend 功能似乎不起作用