фокус () не работающий в сафари или хроме

У меня есть отделение, которому дали tabindex, когда отделение фокусируется (щелчок или снабжается вкладками к), это делает следующее:

вставляет вход в себя, дает фокус ввода

это работает отлично в FF, IE и Opera

но в Chome/Safari это дает фокус ввода, но не удается на самом деле поместить курсор во входе (я знаю, что это дает ему фокус, потому что границы фокуса сафари/хрома появляются).

Какие-либо предложения относительно того, что продолжается?

Я должен починить ключевой обработчик после этого так, клавиши со стрелками и клавиши Backspace работают также, не стесняйтесь вмешиваться на этом, если Вы хотели бы.

Заранее спасибо!

Вот образец кода:

var recipientDomElem = $("#recipientsDiv");
recipientDomElem[0].tabIndex = 0;
$("#recipientsDiv").focus(function(e){
var code = (e.keyCode ? e.keyCode : e.which);
window.clearTimeout(statusTimer);
recipientDivHandler(code, null);
});


function recipientDivHandler(code, element){
$("#recipientsDiv").append('<input type="text" id="toInput" class="inlineBlockElement rightSpacer" style="border:0px none #ffffff; padding:0px; width:40px;margin-bottom:3px;padding:0; overflow:hidden; font-size:11px;" />');
$("#toInput").focus();
}

Другая причуда об этом - то, что переключение вкладок до отделения будет стрелять, div.focus () функционируют и правильно дают фокус ввода... это - просто щелчок, который перестал работать. Я пытался поместить .click () функция на отделении, чтобы сделать то же как фокус, но это не работает.

21
задан BinarySolo00100 15 January 2010 в 22:03
поделиться

4 ответа

Я получил ответ самостоятельно ... это может показаться слабым, а слишком просто ... но это работает.

Готов к этой удивительности ..?

Просто добавьте таймер 0 в фокус ... по какой-то причине он просто дает достаточно времени, чтобы полностью загрузить вход в DOM.

function recipientDivHandler(code, element){
$("#recipientsDiv").append('<input type="text" id="toInput" class="inlineBlockElement rightSpacer" style="border:0px none #ffffff; padding:0px; width:40px;margin-bottom:3px;padding:0; overflow:hidden; font-size:11px;" />');
setTimeout(function(){$("#toInput").focus();},0);
}

Если кто-то еще может дополнительно объяснить это или имеет лучший ответ, пожалуйста, не стесняйтесь сделать сцену: -)

23
ответ дан 29 November 2019 в 21:17
поделиться
for FILE in `ls`; do mv $FILE `echo $FILE | sed -e 's:^0*::'`; done
-121--3456788-

sed сам по себе является неправильным инструментом для этого: вам также нужно использовать некоторые сценарии оболочки.

Для получения дополнительных сведений см. Переименование нескольких файлов с помощью страницы Linux . Одной из предложенных идей является использование скрипта rename perl:

rename 's/^0*//' *.jpg
-121--3456789-

согласно html 4,01 standard , tabindex не применяется к divs.

1
ответ дан 29 November 2019 в 21:17
поделиться

Хотя я нигде не смог найти этого конкретного указания, .focus() работает только с входными элементами и соединениями. Также она не поддерживается должным образом в Chrome и Safari. Я разместил здесь демонстрацию , чтобы показать вам, что я имею в виду. Также обратите внимание, что focus() и focusin() (v1.4) имеют одинаковые результаты.

Чтобы определить, попробуйте изменить вашу функцию на .click()

$("#recipientsDiv").click(function(e){ ... })
3
ответ дан 29 November 2019 в 21:17
поделиться

Вероятно, ваша проблема заключается в том, что вы не добавляете объект DOM, а добавляете явный HTML-код на свою страницу - и я сомневаюсь, что Safari обновляется DOM за кулисами.

Попробуйте использовать фактические методы DOM, такие как document.createElement () , чтобы добавить ваш ввод в DOM, как описано в нескольких местах (например, здесь или здесь или здесь ), а затем проверьте, сохраняется ли проблема Safari.

Все это говорит о том, как вы описываете возникающую проблему - например, для щелчков, но не для вкладок - можно утверждать, что проблема не в этом ... так что теперь мне любопытно.(В любом случае использование методов DOM - действительно правильный способ добавления элементов, так что это все равно неплохая идея.)

2
ответ дан 29 November 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: