Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
qwertyu
#1

Перерисовка текущего окна+некоторая информация???

28.02.2011, 10:37. Просмотров 2851. Ответов 11
Метки нет (Все метки)

Можно ли сделать такое?
Есть текушищий сгенерированный HTML.

В нём есть поле <INPUT type='text'.......
Рядом с ним кнопка(button).

И допустим в это поле я ввожу какое-нибудь число и нажимаю кнопку OK.
Происходит полная перерисовка текущей страницы(текущее содержание всей страницы)+число дополнительных INPUT-овских полей соответствующее тому числу которое я ввёл.
То бишь вот такая частично рекурсивная функция.

На вновь сгенерированной странице всё это вновь можно было бы это сделать+ с уже добавленными полями.(то есть страница увелицилась в размере уже)

Заранее благодарен!!!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2011, 10:37
Ответы с готовыми решениями:

Изменить размер текущего окна
Подскажите, как изменить размер текущего окна. Вроде все правильно пишу, но не...

Как поменять размеры текущего окна?
window.resizeTo(640,360); - эффект нулевой и как вообще подвырубить в текущем...

Как у текущего окна изменить размеры, и убрать навигацию?
Вот такая проблема: в уже открытом окне необходимо убрать панели навигации(они...

Некоторая информация по библиотеки PyQt5
Начал изучать библиотеку PyQt5. В связи с этим стали возникать вопросы. В...

Перерисовка окна другого процесса через дескриптор этого окна
Приветствую всех. Может кто-то знает, как перерисовать окно другого процесса...

11
freem
28.02.2011, 15:36 #2
можно.
можно через DOM можно просто через document.write() [...хм...] в чём проблема то ?
qwertyu
11.05.2011, 09:33 #3
Ну подскажите(напишите) пожалуйста как это сделать
sl_play
2 / 2 / 3
Регистрация: 25.05.2009
Сообщений: 2,576
11.05.2011, 11:21 #4
я такое делаю в каждой форме, в которой использую передачу файла, еслть селект в котором числа от 1-10, юзверь выбирает, после этого ему отображаются нужное количество полей для ввода имени передаваемого файла.
Есть два способа решения, один серверный, другой на клиенте.
Серверный: придётся из этого селекта, о котором я выже говорил, передавать гет-методом переменную с значением выбранным в этом селкте.
На клиенте: на onChange в селекте мы вешаем функцию, которая вписывает нужное количество полей в документ. Примерно вот так, эта функция получает колиечтсво вставляемых полей и штмл элемент в который делается вставка

function photoForm(obj,count){
var str='
';
for(i=0;i<count;i++){
str+='<input type= 'file ' name= 'photo_'+i+' ' > <input type= 'text ' name= 'photo_name_'+i+' '>
';
}
obj.parentNode.innerHTML+=str

}
0
bazile
65 / 41 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
11.05.2011, 11:47 #5
Дополню ответ sl_play как сделать тоже самое методами DOM. Пример проверялся в IE6/Mozilla/Opera7
Код
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<title>inputCount</title>
<script type='text/javascript'>
function addInputs()
{
    var inputCount = document.getElementById('inputCount').value;
    if (!/d+/.test(inputCount))
    {
        alert('Кол-во полей должно быть целым положительным числом');
        return;
    }
    inputCount = parseInt(inputCount);

    var insertTo = document.getElementById('inputContainer');
    // Удаление старых input-ов (можно не делать)
    for (;insertTo.childNodes.length;)
    {
        insertTo.removeChild(insertTo.childNodes[0]);
    }
    // Добавление inputCount элементов
    for (var i=0; i<inputCount; i++)
    {
        var inputText = document.createElement('INPUT');
        // Имя
        var attName = document.createAttribute('name');
        attName.nodeValue = 'txt'+(i+1);
        inputText.attributes.setNamedItem(attName);
        // Значение
        var attValue = document.createAttribute('value');
        attValue.nodeValue = 'txt'+(i+1);
        inputText.attributes.setNamedItem(attValue);

        insertTo.appendChild(inputText);
    }

}
</script>
</head>
<body>
<form>
<input type='text' id='inputCount' name='inputCount'> <input type='button' onclick='addInputs()' value='Добавить поля'>
<div id='inputContainer'></div>
</form>
</body>
</html>
0
sl_play
2 / 2 / 3
Регистрация: 25.05.2009
Сообщений: 2,576
11.05.2011, 19:21 #6
DOMом конечно круче, но чёрт возьми - так громоздко
0
bazile
65 / 41 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
11.05.2011, 19:22 #7
Дело не в крутизне, а переносимости
0
sl_play
2 / 2 / 3
Регистрация: 25.05.2009
Сообщений: 2,576
11.05.2011, 19:29 #8
моём варианте, как ты понимаешь единственное, что может не сработать - это innerHTML, а построение штмл строки, мне кажется на много проще, чем в твоём примере. Тем более, что даже если я всё выстроил как сделал я, то я потом точно так же через модель DOM смогу ко всему этому обраться.
0
bazile
65 / 41 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
11.05.2011, 19:42 #9
2 sl_play
На самом деле мне надо было сначала проверить работает ли innerHTML в браузерах кроме MSIE. То Mozilla и Firefox его поддерживают я знал и раньше. Были сомнения насчет Opera, но как оказалось напрасно. Opera 7 поддерживает свойство innerHTML. Так что в данном случае мой вариант с DOM нет смысла использовать.
0
sl_play
2 / 2 / 3
Регистрация: 25.05.2009
Сообщений: 2,576
11.05.2011, 20:51 #10
втой пример хорошо использовать как учебное пособие по модели DOM
0
qwertyu
12.05.2011, 10:26 #11
Объясни некоторое:

Первое:

var inputCount = document.getElementById('inputCount').value;
if (!/d+/.test(inputCount))
{
alert('Кол-во полей должно быть целым положительным числом');
return;
}

Что вот это за зверь ( if (!/d+/.test(inputCount)) )....я чё то как-то не допираю...хотя всё работает

Второе:

var inputText = document.createElement('INPUT');
// Имя var attName = document.createAttribute('name'); attName.nodeValue = 'txt'+(i+1); inputText.attributes.setNamedItem(attName); // Значение var attValue = document.createAttribute('value'); attValue.nodeValue = 'txt'+(i+1); inputText.attributes.setNamedItem(attValue); insertTo.appendChild(inputText);

Какую главу по JavaScript почитать про динамические генерируемые элементы.....

Третье(глупый вопрос):

<div id='inputContainer'></div>

Могу ли я вместо этого <div> использовать несколько вложенных <tr><table>

Заранее благодарен!!!
bazile
65 / 41 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
12.05.2011, 11:31 #12
2 qwertyu
> Что вот это за зверь ( if (!/d+/.test(inputCount)) )
/d+/ это регулярное выражение. Означает 1 и более цифр.
Метод test проверяет совпадает ли его аргумент с щаблоном.
Кстати, в шаблоне ошибка. Надо так писать /^d+$/
Описание есть в MSDN
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/js56reconIntroductionToRegularExpressions.asp?frame=true

Насчет динамического создания элементов. Возьми лучше за основу пример sl_play.
0
12.05.2011, 11:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2011, 11:31

В строках, где введена некоторая информация, ничего ввести/изменить нельзя
Приветствую всех. Загадочная ситуация: В строках, где введена некоторая...

Перерисовка окна
Я понимаю, что эта тема уже избита. При программировании окон непосредственно...

Перерисовка окна
Здравствуйте. Нужно создать приложение, которое в случайном порядке скрывает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru