jquery 在不同元素上合并两个事件?

myzjeezk  于 2023-03-01  发布在  jQuery
关注(0)|答案(3)|浏览(102)

我有一个textArea,你可以在这里输入消息,然后按下一个按钮来提交它。整个提交过程将在JS/jQuery中进行。现在提交将只由提交按钮的onclick事件触发。

$(".btn-success").click(function () {
        // Submit Code
 });

现在我想合并:

$('textarea').keypress(function (e) {
        if(e.which == 13) {
            // Same Submit Code
        }
    });

这样,当用户按“enter”时,消息就被提交,而不必重复该功能两次。
有什么帮助吗?在论坛上什么都找不到...

9q78igpj

9q78igpj1#

如果函数完全相同,则事件发生在同一元素上,我建议使用on将它们连接起来:

$('#element').on('click change other_events', function(e){...});

然而,事实并非如此,简单的答案是创建一个submit函数并在不同的事件回调中调用它

function submit() {
    // your code
}
$(".btn-success").click(function () {
    submit()
});
$('textarea').keypress(function (e) {
    if(e.which == 13) {
        submit()
    }
});
3zwtqj6y

3zwtqj6y2#

这个函数就是为了完成这个任务而诞生的,给予它取个名字

function onSubmit() {
  // Submit Code
}

$(".btn-success").click(onSubmit)
$('textarea').keypress(function (e) {
  if(e.which == 13) {
    onSubmit()
  }
});

如果在函数onSubmit中使用this,请替换为$(“.btn-success”)[0]

3z6pesqy

3z6pesqy3#

只需使用标准命名函数:

$(".btn-success").click(doIt);
$('textarea').keypress(function (e) {
        if(e.which == 13) doIt();
    });

function doIt() {
// can be called from anywhere
}

相关问题