我使用以下javascript作为我的即时搜索功能(以检测访问者何时停止写入,因此该功能不会在每个单独的键盘上运行).
它工作但它延迟超过1000毫秒.即使我将其设置为200毫秒,它也会在即时搜索功能运行之前延迟1-2秒.
是否有更好/更快的方法来检测访问者何时停止输入输入(如果这有任何区别,我只需要它用于Internet Explorer).
$(document).ready(function(){
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
$('input').keyup(function() {
delay(function(){
//instant search function here
}, 1000 );
});
});
Run Code Online (Sandbox Code Playgroud)
新想法:当我想到它时,问题是当函数运行时我无法继续在输入字段中写入.任何解决方案,我将不需要任何延迟功能.
我有一个简单的Python程序,它使用read-eval-print循环来读取用户输入raw_input,然后将内容打印到屏幕上.我希望保留以前输入的历史记录,并在用户按下keyup或keydown时循环显示它们,类似于Python解释器或bash shell.我怎么能用Python做到这一点?
有人要求提供示例代码:
while True:
user_input = raw_input()
print user_input + " this many hats!!!"
Run Code Online (Sandbox Code Playgroud)
我想这样做,所以一个keyup将最后一行输入放在命令行上.给出的第一个答案,使用该readline模块,可能是最好的.
我的页面中有一个输入框,我想在"keyup"事件中更改其值(按键也适用于我).问题是,每次设置输入值时,输入都会变为空白!
这是我的HTML:
<input id="time" type="number" />
Run Code Online (Sandbox Code Playgroud)
和javascript:
$('#time').keyup(function (e) {
var key = e.keyCode;
var itime = $("#time");
if (itime.val().length == 2) {
var text = itime.val() + ":";
$("#time").val(text);
}
})
Run Code Online (Sandbox Code Playgroud)
我想要的是自动将":"字符附加到我在两次笔画后输入的内容中.
我想实现像蒙面输入插件这样的东西,但很明显没有它.
此代码会将框中用户键入的任何内容更改为大写,并在框中显示结果.
<html>
<head>
<script type="text/javascript">
function upperCase(x)
{
var y=document.getElementById(x).value;
document.getElementById(x).value=y.toUpperCase();
document.getElementById("mySpan").value=y.toUpperCase();
}
</script>
</head>
<body>
Enter your name: <input type="text" id="fname" onkeyup="upperCase(this.id)">
<br/>
<span id="mySpan"></span>
</body> </html>
Run Code Online (Sandbox Code Playgroud)
但是我如何才能使它在文本框下显示呢?当用户输入时,大写文本显示在文本框下?
谢谢!
这有点奇怪,所以我想我要么缺少一些明显的东西,要么就是这些事件在浏览器中实现的缺陷.
让我首先总结一个示例场景,在提供一个孤立的案例之前,这个问题就出现了;
箭头键用于移动播放器(因为只要在页面的任何位置按键,就会触发handleKeyDown函数).同样,只要释放一个键,就会触发另一个函数(handleKeyUp).
当你(玩家)按住左键时,handleKeyDown函数会被重复触发(我认为我认为这会违背你的期望和名称所暗示的内容,但是,尽管如此,这是所有浏览器的正常行为,因为我确定你懂).
所以这就是发生的事情:玩家有朝这个方向行走的方向; 然后他们按下一个数字键(对于热键项目),他们继续走路,同时按住方向.这里发生的是当您释放热键项目的数字键时,玩家移动的重复就会停止!
我写了一个非常小的这种行为的例子:
<html>
<head>
<script type='text/javascript' src='jquery-1.5.1.min.js'></script>
<script type='text/javascript'>
var log = {};
var keyState = {};
var keyCount = {'down': 0, 'up': 0};
window.addEventListener('keydown', handleKeyDown, false);
window.addEventListener('keyup', handleKeyUp, false);
function handleKeyDown (e)
{
keyState[e.keyCode] = true;
keyCount.down++;
log.prepend(" ["+e.keyCode+"] ");
return false;
}
function handleKeyUp (e)
{
keyState[e.keyCode] = false;
keyCount.down++;
return true;
}
$(function(){log = $('#log');});
</script>
</head>
<body>
<div id='debug'></div>
<div id='log'></div>
</body>
Run Code Online (Sandbox Code Playgroud)
你也可以在这里试试:
按页面上的任意键,您将看到页面上出现keyCode.按住键时,键码会一遍又一遍地重复.
当初始键仍然被按住时,按下另一个键时,该行为变得古怪.在释放该最近的密钥时,重复从第一个密钥停止.有趣的是,如果您尝试该示例并按住一个键,然后按住第二个键,但不是释放第二个键,而是释放第一个键:第二个键继续重复.
所以似乎继续发生的是,当keyup事件被触发时,它似乎终止了在早期键上触发的keydown事件中的重复.
我尝试了各种各样的事情,包括在事件处理函数中使用返回false,返回true,尝试按键而不是keydown,保存键状态并在按钮的keystate仍然为true时继续移动,但是这一切都归结为为什么当键盘被触发时,任何主动传播的keydown事件都被杀死.我读过JavaScript疯狂:键盘事件,我没有看到任何关于这种特定行为的内容.
这是关键事件实施的设计缺陷,还是我遗漏了什么?我在Chrome,IE和Firefox中观察到了同样的行为. …
我的表单中有一个 tabcontrol,我需要使用 keyup 事件来管理一些东西。
当我按向左或向右按钮时,标签页会发生变化,我希望禁用 tabcontrol 键盘导航。
有可能做到这一点吗?
我有一个购物车应用程序,它将使用以下updateCart()函数使用AJAX请求"即时"更改页面上的购物车价格 - 它调用render_cart()函数以使用以下方式显示购物篮中的每个商品'keyup'事件.
出于某种原因,它在初始键盘按下时工作正常 - 但是如果我再次尝试这样做它就不起作用,即使我可以在输入字段上看到.cart-qty类,有人可以建议为什么会发生这种情况吗?
// on keyup event call the update cart function
$(".cart-qty").on('keyup',function( e ) {
var qty = $(this).val(); // e.g '2'
var rowid = $(this).data("rowid"); // e.g 740fdjhirtj3swnjf463
$( ".basket-item" ).remove();
updateCart( qty, rowid );
} );
function updateCart( qty, rowid ){
$.ajax({
type: "POST",
url: "/cart/ajax_add_item",
data: { rowid: rowid, qty: qty },
dataType: 'json',
success: function(data){
render_cart(data);
}
});
}
function render_cart(json) {
total = json.total;
cart = json.contents;
var html = ''; …Run Code Online (Sandbox Code Playgroud) <center><h14>for typing help<a href="help.html"> click here</a></h14></center>
<td valign="top"><center>
//in this line I want to use addEvent instead of onkeyup
<textarea id="ta_in" rows="7" cols="42" onkeyup="get_ml()"></textarea>
<br>
<textarea id="ta_out" rows=7" cols="42"></textarea></center>
</td>
Run Code Online (Sandbox Code Playgroud) 我有一个实时搜索方法,可以在您在文本框中键入时进行搜索。它使用的服务需要很长时间,因此我决定仅在用户暂停或停止输入 n 秒(例如 0.5 秒)时调用搜索服务。在这样做的同时
j$132('#AdvanceSearch table:first input').unbind('keyup').keyup(function () {
window.setTimeout(function () {
LoadAdvanceSearch();
}, 500);
});
Run Code Online (Sandbox Code Playgroud)
它等待 500 毫秒,这很好,但是对于每个键,它等待然后发送另一个服务调用。
是否有一个技巧,在 onkeyup 下它只在用户完成输入时调用该方法一次。
我正在尝试使用键盘 ESC 键来转义模态框(通过使用纯 JavaScript 将其删除),但看起来好像出了点问题。
代码来自 W3SCHOOL 示例: W3school 示例
这是当人们按下键盘 ESC 键时我试图添加的代码以进行转义:
document.addEventListener('keyup', function(event) {
if (event.keyCode === 27) {
modal.classList.remove('modal');
}
});
Run Code Online (Sandbox Code Playgroud)
片段:
document.addEventListener('keyup', function(event) {
if (event.keyCode === 27) {
modal.classList.remove('modal');
}
});
Run Code Online (Sandbox Code Playgroud)
// Get the modal
var modal = document.getElementById('myModal');
// Get the image and insert it inside the modal - use its "alt" text as a caption
var img = document.getElementById('myImg');
var modalImg = document.getElementById("img01");
var captionText = document.getElementById("caption");
img.onclick = function(){
modal.style.display = "block"; …Run Code Online (Sandbox Code Playgroud)