Ответ 1
nsListControlFrame::KeyPress
в http://mxr.mozilla.org/mozilla-central/source/layout/forms/nsListControlFrame.cpp, похоже, не проверяет, было ли предотвращено действие по умолчанию. Файл ошибка?
Я понимаю, что есть другие вопросы о том, что preventDefault() не работает с Firefox, но они мне не помогли.
У меня есть три списка SELECT, и все, что я хочу, - это перемещаться между ними с помощью клавиш со стрелками, не изменяя никаких значений. Код отлично работает в Chrome, но в Firefox он перемещает фокус, а затем меняет значение на только что перенесенный элемент.
http://jsbin.com/ofitif/3/edit
JavaScript:
$(document).ready(function () {
$('.myinput').keydown(function (evt) { onkeydown(evt); });
$('.myinput:first').focus();
});
function onkeydown(evt) {
evt.preventDefault();
console.log(evt.which);
if(evt.which == 39) {
$(document.activeElement).next().focus();
}
else if(evt.which == 37) {
$(document.activeElement).prev().focus();
}
}
HTML:
<div id="inputs">
<select class="myinput">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<select class="myinput">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<select class="myinput">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
nsListControlFrame::KeyPress
в http://mxr.mozilla.org/mozilla-central/source/layout/forms/nsListControlFrame.cpp, похоже, не проверяет, было ли предотвращено действие по умолчанию. Файл ошибка?
в соответствии с вашим требованием попробуйте передать значение для предотвращения по умолчанию.. это будет что-то вроде ниже.
evt.preventDefault ? evt.preventDefault() : evt.returnValue = false;
это сработало для меня PLZ попробовать его.......
Верните false
из обработчика keydown
:
$('.myinput').keydown(function (evt) { onkeydown(evt); return false; });