我有以下想法。
当用户键入大于10的数字时,会出现一条消息。如何删除此消息让我们说2秒后?
此外,如果您输入一个数字,让我们说8并点击退格,则会出现0。如何让数字1从一开始就出现在文本框中,但也可以在用户点击后台删除他的选择的任何时候,就像上面的例子一样?我尝试将value="1"
添加到文本框中,但它不会从头开始显示div中的结果。
感谢您的帮助
UPDATE 小提琴我有一个小问题,我更新了它
答案 0 :(得分:1)
已经有一段时间了,但试试这个:
$('#message').delay(2000).hide();
答案 1 :(得分:1)
您应该使用:
您可以使用settimeout:
setTimeout(function(){
// remove the message
}, 2000); // time in miliseconds
当我尝试输入内容时,您的代码也无效并显示NaN。
也可以使用:
var code = (e.keyCode ? e.keyCode : e.which);
找出按下了哪个键:
jQuery Event Keypress: Which key was pressed?
修改强>
如果您希望在页面加载时显示该值,请将该内容添加到函数中并在文档就绪时调用它:
<强> EDIT2 强>
使用退格后
更新了小提琴也显示1答案 2 :(得分:1)
像
这样的东西$('#purchases').keydown(function(e){
if(!(e.which >= 48 && e.which <=58) && e.which !== 8 && e.which !== 46 && e.which !== 37 && e.which !== 39){
e.preventDefault();
}
})
.keyup(function(){
val = parseInt($(this).val() || 0, 10);
if(val > 10){
val = 10;
$(this).val(10);
$('#message').text("no more than 10");
setTimeout(function() { $('#message').text(""); }, 2000);
}
$('#amount').text(val * 10);
});
修改强>
与你的评论一致,这是一个修订版
var purchases = $('#purchases'),
amount = $('#amount'),
message = $('#message');
purchases.keydown(function(e) {
if (!(e.which >= 48 && e.which <= 58) && e.which !== 8 && e.which !== 46 && e.which !== 37 && e.which !== 39) {
e.preventDefault();
}
}).keyup(function() {
var val = purchases.val();
if (!val) {
amount.text(1);
return;
}
val = parseInt(val, 10);
if (val > 10) {
val = 10;
$(this).val(10);
message.text("no more than 10");
setTimeout(function() {
message.text("");
}, 2000);
}
amount.text(val * 10);
}).val(1);
答案 3 :(得分:0)
答案 4 :(得分:0)
看起来您可以通过在您阅读的输入上运行parseInt()
而受益。
或者,您可以通过向pattern
元素添加input
属性来获取酷HTML5解决方案,假设您的输入包含在表单中并提交:
<form>
<input type="text" pattern="^\d$" />
</form>
只允许输入一个数字字符。