Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не срабатывает focus() 
V
    Опции темы
Itsys
Дата 6.5.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



Есть следующий код:
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Перемещение</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="ru">
<style>
    input.minus { background:transparent; border:none; padding:0; color: #00a; font: normal 1em serif; text-decoration:none; cursor:pointer; }
</style>
<script language="JavaScript">
var Goods={
'257' : {name: 'Caffe Mate Сливки 50Х5Г', type: 'good', addition: []},
'203' : {name: 'Ахмад Английский Чай №1 100Х2Г', type: 'good', addition: []},
'001' : {name: 'Кулер Н\С', type: 'equipment', addition: []}
};
id = 1;
editid = 0;

function addRow(){
    tb = document.getElementById('Goods');
    newrow = tb.insertRow(-1);
    id = id + 1;
    newrow.id = 'Goodsrow' + id;
    newcell = newrow.insertCell(-1);
    newcell.innerHTML = '<input type="button" value="уд" onclick="deleteRow(' + id +')" class="minus">';
    newcell = newrow.insertCell(-1);
    newcell.innerHTML = '<input name="Good' + id +'" id="Good' + id +'" type="text" size="3" onchange="changeGood(this);"><span id="Good' + id +'Name"></span>';
    newcell = newrow.insertCell(-1);
    newcell.innerHTML = '<input name="Good' + id +'Quantity" type="text" size="5">';
    newcell = newrow.insertCell(-1);
    newcell.innerHTML = '<input type="button" value="" id="Good' + id +'Button" onclick="editGood(' + id +')">';
}

function deleteRow(id){
    tb = document.getElementById('Goods');
    row = document.getElementById('Goodsrow' + id);
    ind = row.rowIndex;
    tb.deleteRow(ind);
}

function changeGood(_this){
    if (Goods[_this.value]){
        document.getElementById(_this.name + 'Name').innerHTML = Goods[_this.value].name;
        if (Goods[_this.value].type == 'good'){
            document.getElementById(_this.name + 'Button').value = 'Партии';
        }
        else{
            document.getElementById(_this.name + 'Button').value = 'ШК';
        }
    }
    else{
        _this.value = '';
        document.getElementById(_this.name + 'Name').innerHTML = 'нет такого кода';
    }
}

function editGood(id){
    editid = id;
    document.getElementById('additionalInfo').style.top = document.body.scrollTop;
    document.getElementById('additionalInfo').style.display = 'block';
    document.getElementById('additionalInfo').style.visibility = 'visible';
    if (Goods[document.getElementById('Good' + id).value]){
        good = Goods[document.getElementById('Good' + id).value];
        text = '<center><b>Ввод детальной информации по ' + good.name + '</b><br>';
        text += '<table  border="2" width="10%">';
        text += '<tr><td>Действие</td><td>' + document.getElementById(document.getElementById('Good' + id).name + 'Button').value + '</td></tr>';
        for (i in good.addition){
            text += '<tr><td><input type="button" value="Удалить"></td><td>' + good.addition[i] + '</td></tr>';
        }
        text += '<tr><td colspan="2">Новый: <input type="text" id="newAddition" onchange="newAddition(this)"></td></tr>';
        text += '</table>';
        text += '<input type="button" value="Закрыть" onclick="document.getElementById(\'additionalInfo\').style.display = \'none\'"></center>';
        document.getElementById('additionalInfo').innerHTML = text;
        document.getElementById('newAddition').focus();
    }
}

function newAddition(el){
    good = Goods[document.getElementById('Good' + editid).value];
    good.addition.push(el.value);
    editGood(editid)
}
</script>
</head>
<body>
    <div style="position: absolute; width: 50%; height: 100%; z-index: 3; overflow: scroll; display: none; background-color:#FFFFFF; visibility:hidden" id="additionalInfo"></div>
    <form>
        Тип документа:<br>
        <input name="DocType" value="Перемещение" type="radio">Перемещение<br>
        <input name="DocType" value="ПеремещениеУпр" type="radio" checked>Перемещение (упр.)<br>
        <input name="DocType" value="ПередачаВодителю" type="radio">Передача водителю
        <hr>
        Дата: <input name="Date" type="text" size="10"><br>
        Номер: <input name="Number" type="text" size="10">
        <hr>
        Склад отправитель:<br>
        <input name="WHOut" type="text" size="50%"><br>
        Склад получатель:<br>
        <input name="WHIn" type="text" size="50%">
        <table border="2" width="50%" id="Goods">
            <tr>
                <td><b>-</b></td>
                <td><b>Номенклатура<br>257,203,001</b></td>
                <td><b>Кол.</b></td>
                <td><b>ШК<br>Партии</b></td>
            </tr>
            <tr id="Goodsrow1">
                <td><input type="button" value="уд" onclick="deleteRow(1)" class="minus"></td>
                <td><input name="Good1" id="Good1" type="text" size="3" onchange="changeGood(this);"><span id="Good1Name"></span></td>
                <td><input name="Good1Quantity" type="text" size="5"></td>
                <td><input type="button" value="..." id="Good1Button" onclick="editGood(1)"></td>
            </tr>
        </table>
        <input type="button" value="Добавить строку" onclick="addRow()">
        <hr>
        Дополнительные параметры:
    </form>
</body>

Не срабатывает строка 74

Как повоторить в поле таблицы вводим 257, 203, нажимаем на кнопку "Партии" - Поле "Новый" должно быть активным, вводим любой текст, нажимаем "Tab" в таблице появляется введенный текст, а поле "Новый" должно активизироваться для приема новых данных.

ЗЫ не смотрите на кривость кода, т.к. он пишется под конкретный браузер - Opera for Windows Mobile. Все работает, кроме активизации поля ввода.

Добавлено @ 18:03
ЗЗЫ надеюсь, что не очень запутанно объяснил, чего хочу  smile 

Это сообщение отредактировал(а) Itsys - 6.5.2008, 20:33
PM MAIL WWW Skype   Вверх
Itsys
Дата 6.5.2008, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



Самое интересное, что данный код прекрасно отрабатывает в обычной Opere, FF, но также глючит в IE 6 и 7
PM MAIL WWW Skype   Вверх
dstorm81
Дата 7.5.2008, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: 20
Всего: 39



Itsys

попробуй заменить
document.getElementById('newAddition').focus();

на
document.getElementById('newAddition').focus();
document.getElementById('newAddition').focus();


и </html> закрой, у тебя в примере его нет.

(ослик 7 захавал )

Это сообщение отредактировал(а) dstorm81 - 7.5.2008, 08:47


--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
Itsys
Дата 7.5.2008, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



dstorm81, В IE сработало smile завтра попробую на Opera for Windows Mobile.
PM MAIL WWW Skype   Вверх
Itsys
Дата 8.5.2008, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



В Opera for Windows Mobile работает, но каким-то странным способом  smile он подсвечивает элемент <input>, но курсор внутрь не ставит, соответственно ввод текста не возможен  smile 
PM MAIL WWW Skype   Вверх
dstorm81
Дата 8.5.2008, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: 20
Всего: 39



не имею мобильной оперы, имею дескопную, имею с ней проблемы
используя телепатическую способность 3.14 уровня 
предлагаю вариации

document.getElementById('newAddition').focus();
window.setTimeout("document.getElementById('newAddition').focus()",1);

или просто

window.setTimeout("document.getElementById('newAddition').focus()",1);

или

document.getElementById('newAddition').focus();
document.getElementById('newAddition').focus();
window.setTimeout("document.getElementById('newAddition').focus()",1);



Это сообщение отредактировал(а) dstorm81 - 8.5.2008, 10:58


--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
Itsys
Дата 8.5.2008, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



Проблема не в этом, "фокус" элемент получает, он "подсвечивается" но для ввода данных в поле необходимо нажать "Enter", т.е. лишняя кнопка, лишняя операция и т.д., а надо, пробовал использовать метод click() - не получилось....
PM MAIL WWW Skype   Вверх
dstorm81
Дата 8.5.2008, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: 20
Всего: 39



как вариант почему бы тебе это инпут не оставить в начальной форме?
вначале сделать его disabled а потом снимая с него  disabled



--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
Itsys
Дата 8.5.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



Цитата(dstorm81 @  8.5.2008,  11:28 Найти цитируемый пост)
инпут не оставить в начальной форме?
вначале сделать его disabled а потом снимая с него  disabled

Не совсем понял, чего ты имеешь в виду...

А может кто знает, как JS эмулировать нажатие на "Enter", как перехватывать событие нажатия я знаю, а вот как программно "нажать" на кнопку нет...

Это сообщение отредактировал(а) Itsys - 8.5.2008, 12:44
PM MAIL WWW Skype   Вверх
Itsys
Дата 8.5.2008, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



Умный в гору не пойдет, умный гору обойдет  smile 
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Перемещение</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="ru">
<style>
    input.minus { background:transparent; border:none; padding:0; color: #00a; font: normal 1em serif; text-decoration:none; cursor:pointer; }
</style>
<script language="JavaScript">
var Goods={
'257' : {name: 'Caffe Mate Сливки 50Х5Г', type: 'good', addition: []},
'203' : {name: 'Ахмад Английский Чай №1 100Х2Г', type: 'good', addition: []},
'001' : {name: 'Кулер Н\С', type: 'equipment', addition: []}
};
id = 1;
editid = 0;

function addRow(){
    tb = document.getElementById('Goods');
    newrow = tb.insertRow(-1);
    id = id + 1;
    newrow.id = 'Goodsrow' + id;
    newcell = newrow.insertCell(-1);
    newcell.innerHTML = '<input type="button" value="уд" onclick="deleteRow(' + id +')" class="minus">';
    newcell = newrow.insertCell(-1);
    newcell.innerHTML = '<input name="Good' + id +'" type="text" size="3" onchange="changeGood(this);"><span id="Good' + id +'Name"></span>';
    newcell = newrow.insertCell(-1);
    newcell.innerHTML = '<input name="Good' + id +'Quantity" type="text" size="5">';
    newcell = newrow.insertCell(-1);
    newcell.innerHTML = '<input type="button" value="" id="Good' + id +'Button" onclick="editGood(' + id +')">';
}

function deleteRow(id){
    tb = document.getElementById('Goods');
    row = document.getElementById('Goodsrow' + id);
    ind = row.rowIndex;
    tb.deleteRow(ind);
}

function changeGood(_this){
    if (Goods[_this.value]){
        document.getElementById(_this.name + 'Name').innerHTML = Goods[_this.value].name;
        if (Goods[_this.value].type == 'good'){
            document.getElementById(_this.name + 'Button').value = 'Партии';
        }
        else{
            document.getElementById(_this.name + 'Button').value = 'ШК';
        }
    }
    else{
        _this.value = '';
        document.getElementById(_this.name + 'Name').innerHTML = 'нет такого кода';
    }
}

function editGood(id){
    editid = id;
    document.getElementById('additionalInfo').style.top = document.body.scrollTop;
    document.getElementById('additionalInfo').style.display = 'block';
    document.getElementById('additionalInfo').style.visibility = 'visible';
    if (Goods[document.getElementById('Good' + id).value]){
        good = Goods[document.getElementById('Good' + id).value];
        text = '<center><b>Ввод детальной информации по ' + good.name + '</b><br>';
        text += '<table>';
        text += '<tr><td colspan="2">Новый:<br><textarea rows="1" name="S1" cols="20" onkeypress="newAddition(this)" id="newAddition"></textarea><div id="deb"></div></td></tr>';
        text += '</table>';
        text += '<table  border="2" width="10%" id="tbadditional">';
        text += '<tr><td>Дей</td><td>' + document.getElementById(document.getElementById('Good' + id).name + 'Button').value + '</td></tr>';
        for (i in good.addition){
            text += '<tr><td><input type="button" value="Уд" class="minus"></td><td>' + good.addition[i] + '</td></tr>';
        }
        text += '</table>';
        text += '<input type="button" value="Закрыть" onclick="document.getElementById(\'additionalInfo\').style.display = \'none\'"></center>';
        document.getElementById('additionalInfo').innerHTML = text;
    }
}

function newAddition(el){
    if (window.event.keyCode == 13){
        good = Goods[document.getElementById('Good' + editid).value];
        good.addition.push(el.value);
        tb = document.getElementById('tbadditional');
        newrow = tb.insertRow(1);
        newcell = newrow.insertCell(-1);
        newcell.innerHTML = '<input type="button" value="уд" class="minus">';
        newcell = newrow.insertCell(-1);
        newcell.innerHTML = el.value;
        el.value = '';
    }
}
</script>
</head>
<body>
    <div style="position: absolute; width: 50%; height: 100%; z-index: 3; overflow: scroll; display: none; background-color:#FFFFFF; visibility:hidden" id="additionalInfo"></div>
    <form>
        Тип документа:<br>
        <input name="DocType" value="Перемещение" type="radio">Перемещение<br>
        <input name="DocType" value="ПеремещениеУпр" type="radio" checked>Перемещение (упр.)<br>
        <input name="DocType" value="ПередачаВодителю" type="radio">Передача водителю
        <hr>
        Дата: <input name="Date" type="text" size="10"><br>
        Номер: <input name="Number" type="text" size="10">
        <hr>
        Склад отправитель:<br>
        <input name="WHOut" type="text" size="50%"><br>
        Склад получатель:<br>
        <input name="WHIn" type="text" size="50%">
        <table border="2" width="50%" id="Goods">
            <tr>
                <td><b>-</b></td>
                <td><b>Номенклатура<br>257,203,001</b></td>
                <td><b>Кол.</b></td>
                <td><b>ШК<br>Партии</b></td>
            </tr>
            <tr id="Goodsrow1">
                <td><input type="button" value="уд" onclick="deleteRow(1)" class="minus"></td>
                <td><input name="Good1" type="text" size="3" onchange="changeGood(this);"><span id="Good1Name"></span></td>
                <td><input name="Good1Quantity" type="text" size="5"></td>
                <td><input type="button" value="..." id="Good1Button" onclick="editGood(1)"></td>
            </tr>
        </table>
        <input type="button" value="Добавить строку" onclick="addRow()">
        <hr>
        Дополнительные параметры:
    </form>
</body>

PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0721 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.