2012-05-10 4 views
1

Я работаю над веб-приложением, которое будет поставляться исключительно клиентам iPad с помощью браузера Mobile Safari. В моей форме есть два поля ввода, которые будут заполнены данными из спаренного сканера штрих-кода Bluetooth.Mobile Safari - fun with focus()

Когда первое поле сканируется, следующий Javascript часы для обратного нажатия клавиши, который анализирует поступающую строку, а затем устанавливает фокус на поле количества ...

function tabtoquantity(e) { 
    keyEntry = event.keyCode; 
    if(keyEntry == '13') { 
     var barcode = document.test.barcodefield.value; 
     var labeltext = barcode.split("*"); 
     document.test.itemkey.value = labeltext[0]; 
     document.test.description.value = labeltext[1]; 
     document.test.lotno.value = labeltext[2]; 
     document.test.datercvd.value = labeltext[3]; 
     document.test.binno.value = labeltext[4]; 
     document.test.unitwgt.value = labeltext[5]; 
     document.test.slot.value = labeltext[6]; 
     document.test.allergens.value = labeltext[7]; 
     document.test.kosher.value = labeltext[8]; 

     //document.test.barcodefield.disabled="true"; 
     //document.test.barcodefield.style.display="none"; 

     document.test.scanqty.focus(); 
    } 
    else if((keyEntry < '48') || (keyEntry > '57')) { 
     return false;    
    } 
} 

Это все работает отлично, за исключением того, что он не фокусируется на моем поле scanqty.

Как ни странно, у меня есть кнопка рядом с полем scanqty, что OnClick вызывает следующую функцию:

function qtyreset() { 
    document.test.scanqty.value = ''; 
    document.test.scanqty.focus(); 
} 

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

Возможно, это релевантно (?), Но помощник формы Mobile Safari (кнопки «Предыдущий» и «Следующий») появляется, когда я загружаю страницу, но исчезает после того, как я сканирую данные в первое поле ... где я хочу, чтобы он установил фокус на scanqty, но, похоже, не задает фокус нигде.

Я ценю любой вход/помощь.

+0

Почему вы используете клавишу ввода? Традиционно он представляет форму. В браузерах рабочего стола вкладка переместится в следующее поле, в мобильном Safari, кнопка «Далее» сделает то же самое. Затем используйте tabIndex, чтобы установить фокус на поле * scanqty * и * barcodefield.onblur *, чтобы вызвать слушателя. – RobG

+0

Более точно, клавиша ввода - это символ, добавленный сканером штрих-кода к отсканированным данным. Я полагаю, что я мог бы запрограммировать его, чтобы вместо этого добавить символ табуляции, и проанализировать строку данных onblur вместо того, чтобы наблюдать за определенным нажатием клавиши. Спасибо, я попробую. – KCBill

+0

Билл, если у вас есть контроль над выходом сканеров, вы можете захотеть, чтобы он сбрасывал все в одном поле ввода и разбирал/перераспределял данные. Я очень скептически отношусь к тому, что есть какие-то гарантии относительно клавиатуры ввода-вывода <-> и что любое решение, включающее динамическое переключение фокуса, будет хрупким. – nmr

ответ

0

Кажется, что focus() работает только, если вы добавили сайт на главный экран и открыли сайт по этой ссылке.