如何基于现有的创建自定义 jquery 触发器

Posted

技术标签:

【中文标题】如何基于现有的创建自定义 jquery 触发器【英文标题】:How to create custom jquery trigger based on existing one 【发布时间】:2018-02-11 19:34:13 【问题描述】:

我有一个带有电子邮件的注册表单, 我正在使用 ParsleyJS 来验证客户端。

当我使用data-parsley-trigger="keyup"attribute 时,它​​的工作很完美,但是 我们只想在用户按下@ 键盘按钮时过滤keyup, 因为我们更喜欢它而不是在第一次键入时开始欧芹验证。

欧芹框架支持 jquery 事件,所以我添加自己的自定义 keyup 应该可以工作。

类似:

<input type="text" data-parsley-type="email" data-parsley-trigger="focusout customkeyup"/>

jQuery('#myForm').keyup( function(e) 
    if (e.which == 50) 
        console.log('Charcter was typed. It was: " + String.fromCharCode(e.which)');
        jQuery(document).trigger('customkeyup');
    
);

但它不起作用 - 我希望它在按下 @ 后才开始验证,不幸的是只有 focusout 似乎起作用,请帮助。

【问题讨论】:

【参考方案1】:

已解决:

我使用stopPropagation() 手动停止keyup 触发器,并且仅当@ 被点击时,然后手动触发我的自定义触发器。

jQuery('#contactEmail').keyup( function(e) 
    e.stopPropagation();
    if (e.which == 50) 
        console.log('Charcter was typed. It was: " + String.fromCharCode(e.which)');
        jQuery('#contactEmail').trigger('customkeyup')
    
);

和输入:

<input type="text" id="contactEmail" data-parsley-type="email" data-parsley-trigger="customkeyup"/>

【讨论】:

以上是关于如何基于现有的创建自定义 jquery 触发器的主要内容,如果未能解决你的问题,请参考以下文章

如何在不覆盖现有样式的情况下向 WPF 自定义控件添加触发器?

如何创建和使用自定义 DataGridRow 触发器

jQuery 添加自定义事件以及触发自定义事件

自定义验证属性不触发 jQuery 验证

如何将自定义 AxisItem 添加到现有的 PlotWidget?

jQuery 自定义事件 - 当宽度为 xx 时触发事件