我有一些有類名的HTML文本框爲數字JQuery的類選擇
<input type="text" name="msg_timeout" class="numbers" />
同樣也有與類不同的文本框爲數字。我想keydown事件分配給那些文本有類作爲數字的盒子,所以我嘗試跟着,但沒有工作
$('input.numbers').each
$('.numbers').each
$('input.numbers:text').each
$('input:text.numbers').each
$('input[type=text]').each // only this is working but it selects all textboxes.
請讓我知道主意。 下面的代碼
$(document).ready(function() {
$('input.numbers').each(function() {
$(this).get(0).oncontextmenu = function() { return false; };
$(this).bind("keydown",function(event) {
// alert(window.event);
// Allow only backspace and delete
if (event.keyCode == 46 || event.keyCode == 8
&& (event.keyCode >=96 && event.keyCode <=105))
{
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if (event.keyCode < 48 || event.keyCode > 57 || event.shiftKey || event.ctrlKey || event.altKey) {
event.preventDefault();
}
}
var forbiddenKeys = new Array('c', 'x', 'v');
var keyCode = (event.keyCode) ? event.keyCode : event.which;
var isCtrl;
isCtrl = event.ctrlKey;
if (isCtrl) {
for (i = 0; i < forbiddenKeys.length; i++) {
if (forbiddenKeys[i] == String.fromCharCode(keyCode).toLowerCase()) {
//alert('You are prompted to type this twice for a reason!');
return false;
}
}
}
return true;
});
});
});
所有的例子都應該工作......所以你的代碼中可能還有其他的東西是錯誤的。不僅僅顯示`.each`。 – ThiefMaster 2011-02-05 13:53:04
我同意ThiefMaster。你是否在dom.ready之後調用這些選擇器,就像我在下面顯示的那樣? – xzyfer 2011-02-05 13:55:32