我正在使用最新的moo版本并尝试编写一个函数来评估用户在事件“keyup”上给出的表达式。一旦我的测试通过,我就会自动将焦点放在下一个输入元素上以改善用户体验和速度,因为他多次使用该表单。
所以我想出了类似的东西:
var getNextInputElement = function(element){
returns the next input element
}
var checkDay = function(event){
var input = $('booking_day').get('value');
if (input.length > 1 && input < 32) {
$('booking_day').erase('class');
if (!(event.key == "tab")) {
getNextInputElement($('booking_day')).focus();
}
else {
$('booking_day').focus();
}
}
else if(input.length > 1) {
$('booking_day').set('class','error');
}
else {
$('booking_day').erase('class');
}
};
window.addEvent('domready', function() {
$('new_booking').reset();
$('booking_day').addEvent('keyup', checkDay);
$('booking_day').focus();
});
到目前为止工作正常。但是,如果我尝试“shift-tab”回到我的输入字段
getNextInputElement($('booking_day')).focus();
评估并将焦点重置为下一个输入字段。因此用户无法回滚到先前输入的数据。我没有发现抓住那个班次事件的可能性。由于按下了两个键,因此触发了两个事件。一个用于“制表符”,另一个用于“移位”。这个事件的event.key.code似乎超出了mootools实现的范围。
有谁可以帮助解决这个问题?
感谢。 杰森