单击事件调用(按键)不起作用
event call (keypress) by click does not work
我有两个事件:1) 按键:它在数组中搜索数据。 2) click:对于这个事件,应该会强制调用keypress事件,并没有发生。
我用的是trigger()方法。在 keypress 中,我使用了按下 Enter 的条件:if (event.keyCode == 13) {(所有搜索逻辑都在这里)} else {}。正如我已经写过的那样,不会调用带有点击的按键调用。我假设这是由于条件 event.keyCode == 13,但我可能错了。请告诉我,也许在函数调用中您也需要以某种方式注册此条件 (event.keyCode == 13)?如果是这样,请告诉我如何。如果这不是问题,那么问题是什么?我很乐意回答任何问题。从代码中我删除了这个问题不需要的所有内容,留下了基础。谢谢
$(document).on('keypress', '.search_edit', function(event){
let value = $(this).val().toLowerCase();
if (event.keyCode == 13) {
$('.blog_content').each(function() {
if($(this).text().toLowerCase().indexOf(value) === -1) {
$(this).addClass('item_none');
return;
} else {
$(this).removeClass('item_none');
}
});
});
$('.tags li a').on('click', function (event) {
event.preventDefault();
$('.search_edit').trigger('keypress');
});
////////////////////////////////////////// I tried to do like this. It didn’t help me.
$('.tags li a').on('click', function (event) {
event.preventDefault();
event.keyCode = 13;
$('.search_edit').trigger(jQuery.Event("keypress"));
});
调用一个函数而不是触发按键怎么样?
$(document).on('keypress', '.search_edit', myFunction);
function myFunction(event){
event.preventDefault();
let value = $(this).val().toLowerCase();
if (event.keyCode == 13) {
$('.blog_content').each(function() {
if($(this).text().toLowerCase().indexOf(value) === -1) {
$(this).addClass('item_none');
return;
} else {
$(this).removeClass('item_none');
}
});
}
$('.tags li a').on('click', myFunction);
您可以通过将一个函数绑定到两个事件来实现这一点。
并且在与点击功能绑定时传递您自己的数据,因为这里没有使用 Enter 键的按键,因此您的逻辑不会 运行 按照你的要求。
这是您可以使用的代码:
$(document).on('keypress', '.search_edit', search);
function search(event){
event.preventDefault();
let value = $(this).val().toLowerCase();
if (event.keyCode == 13 || event.data.keyCode == 13) {
$('.blog_content').each(function() {
if($(this).text().toLowerCase().indexOf(value) === -1) {
$(this).addClass('item_none');
return;
} else {
$(this).removeClass('item_none');
}
});
}
$('.tags li a').on('click',{keyCode=13}, search);
我在这里传递了等于13的keyCode的值,这将满足您的条件。
或其他方式可以是:
$(document).on('keypress', '.search_edit', search);
function search(event){
event.preventDefault();
let value = $(this).val().toLowerCase();
if (event.keyCode == 13 ) {
$('.blog_content').each(function() {
if($(this).text().toLowerCase().indexOf(value) === -1) {
$(this).addClass('item_none');
return;
} else {
$(this).removeClass('item_none');
}
});
}
$('.tags li a').on('click', function (event) {
event.preventDefault();
event.keyCode = 13;
search(event);
});
我设法这样做了,而且有效:
$('.tags .tags li a').on('click', function(event) {
event.preventDefault();
var tag = $(this).text().trim();
var event_click_tag_fromblog = $.Event('keypress');
event_click_tag_fromblog.keyCode = 13;
$('.search_edit').val(tag);
$('.search_edit').trigger(event_click_tag_fromblog);
});
我有两个事件:1) 按键:它在数组中搜索数据。 2) click:对于这个事件,应该会强制调用keypress事件,并没有发生。
我用的是trigger()方法。在 keypress 中,我使用了按下 Enter 的条件:if (event.keyCode == 13) {(所有搜索逻辑都在这里)} else {}。正如我已经写过的那样,不会调用带有点击的按键调用。我假设这是由于条件 event.keyCode == 13,但我可能错了。请告诉我,也许在函数调用中您也需要以某种方式注册此条件 (event.keyCode == 13)?如果是这样,请告诉我如何。如果这不是问题,那么问题是什么?我很乐意回答任何问题。从代码中我删除了这个问题不需要的所有内容,留下了基础。谢谢
$(document).on('keypress', '.search_edit', function(event){
let value = $(this).val().toLowerCase();
if (event.keyCode == 13) {
$('.blog_content').each(function() {
if($(this).text().toLowerCase().indexOf(value) === -1) {
$(this).addClass('item_none');
return;
} else {
$(this).removeClass('item_none');
}
});
});
$('.tags li a').on('click', function (event) {
event.preventDefault();
$('.search_edit').trigger('keypress');
});
////////////////////////////////////////// I tried to do like this. It didn’t help me.
$('.tags li a').on('click', function (event) {
event.preventDefault();
event.keyCode = 13;
$('.search_edit').trigger(jQuery.Event("keypress"));
});
调用一个函数而不是触发按键怎么样?
$(document).on('keypress', '.search_edit', myFunction);
function myFunction(event){
event.preventDefault();
let value = $(this).val().toLowerCase();
if (event.keyCode == 13) {
$('.blog_content').each(function() {
if($(this).text().toLowerCase().indexOf(value) === -1) {
$(this).addClass('item_none');
return;
} else {
$(this).removeClass('item_none');
}
});
}
$('.tags li a').on('click', myFunction);
您可以通过将一个函数绑定到两个事件来实现这一点。
并且在与点击功能绑定时传递您自己的数据,因为这里没有使用 Enter 键的按键,因此您的逻辑不会 运行 按照你的要求。
这是您可以使用的代码:
$(document).on('keypress', '.search_edit', search);
function search(event){
event.preventDefault();
let value = $(this).val().toLowerCase();
if (event.keyCode == 13 || event.data.keyCode == 13) {
$('.blog_content').each(function() {
if($(this).text().toLowerCase().indexOf(value) === -1) {
$(this).addClass('item_none');
return;
} else {
$(this).removeClass('item_none');
}
});
}
$('.tags li a').on('click',{keyCode=13}, search);
我在这里传递了等于13的keyCode的值,这将满足您的条件。
或其他方式可以是:
$(document).on('keypress', '.search_edit', search);
function search(event){
event.preventDefault();
let value = $(this).val().toLowerCase();
if (event.keyCode == 13 ) {
$('.blog_content').each(function() {
if($(this).text().toLowerCase().indexOf(value) === -1) {
$(this).addClass('item_none');
return;
} else {
$(this).removeClass('item_none');
}
});
}
$('.tags li a').on('click', function (event) {
event.preventDefault();
event.keyCode = 13;
search(event);
});
我设法这样做了,而且有效:
$('.tags .tags li a').on('click', function(event) {
event.preventDefault();
var tag = $(this).text().trim();
var event_click_tag_fromblog = $.Event('keypress');
event_click_tag_fromblog.keyCode = 13;
$('.search_edit').val(tag);
$('.search_edit').trigger(event_click_tag_fromblog);
});