Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/10: Рейтинг темы: голосов - 10, средняя оценка - 4.70
letalumil
0 / 0 / 0
Регистрация: 13.07.2011
Сообщений: 10
1

JavaScript не работает внутри UpdatePanel

13.07.2011, 10:14. Просмотров 1886. Ответов 3
Метки нет (Все метки)

Здравствуйте. Новичок как в ASP.NET, так и в JavaScript. Возникла следующая проблема:

Имеется следующий скрипт в файле main.js:
Javascript
1
2
3
4
5
6
function getSum() {
    var weight = document.test.tbx_weight.value;
    var cost = document.test.tbx_cost.value;
    var sum = weight * cost;
    document.test.tbx_sum.value = sum;
}
И имеется Sell.aspx:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<head runat="server">
    ...
    <script type="text/javascript" src="scripts/main.js"></script>
    ...
</head>
<body>
    ...
    <form id="mainForm" runat="server" name="test">
        <asp:ScriptManager ID="sm_Sell" runat="server" EnablePartialRendering="true"></asp:ScriptManager>
        <asp:UpdatePanel ID="upnl_Sell" runat="server">
            <ContentTemplate>
                <input type="text" name="tbx_weight" />
                <input type="text" name="tbx_cost" onkeydown="getSum();" onkeyup="getSum();"/>
                <input type="text" name="tbx_sum" />
            </ContentTemplate>
        </asp:UpdatePanel>
    </form>
    ...
</body>
И все это в таком виде к сожалению не работает.
Если вынести все текстБоксы за пределы UpdatePanel:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<head runat="server">
    ...
    <script type="text/javascript" src="scripts/main.js"></script>
    ...
</head>
<body>
    ...
    <form name="test">
        <input type="text" name="tbx_weight" />
        <input type="text" name="tbx_cost" onkeydown="getSum();" onkeyup="getSum();"/>
        <input type="text" name="tbx_sum" />
    </form>
    ...
</body>
То тогда все работает так как нужно.

Подскажите пожалуйста, как мне подружить JavaScript с UpdatePanel?

Добавлено через 8 часов 5 минут
UPD:
Заметил следующую закономерность, если у формы runat="server", то тогда JavaScript в ней ней работает.

XML
1
2
3
4
5
<form name="test" runat="server">
    <input type="text" name="tbx_weight" />
    <input type="text" name="tbx_cost" onkeydown="getSum();" onkeyup="getSum();" />
    <input type="text" name="tbx_sum" />
</form>
Стоит убрать runat="server", так скрипт сразу работает. Видимо дело совсем не в UpdatePanel.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2011, 10:14
Ответы с готовыми решениями:

Загрузка файла внутри UpdatePanel
всем привет! помогите, пожалуйста, разобраться! есть форма, которая заключена в UpdatePanel,...

Не работает updatepanel вместе с dropdownlist
Всем привет. Проблема такая: есть ajax-панель и dropdownlist, у которого включен автопостбэк. По...

Updatepanel останавливает другую updatepanel
Привет ещё раз ) Есть две апедйтпанели, на одной идет время с секундами, на другой долгая операция...

updatepanel gridview событие RowDeleting не работает
Здравствуйте, борюсь уже второй день ни как не магу победить проблему. Необходимо добиться того,...

javascript внутри javascript
Здравствуйте. Помогите решить задачу. Нужно на html странице под спойлером в textarea поставить...

3
Bazzy
192 / 185 / 14
Регистрация: 09.02.2011
Сообщений: 458
13.07.2011, 10:26 2
Как только не извращался чтобы оно у меня не заработало ))) но работает...

Попробуйте в обработчик PagePreLoad добавить:
Visual Basic
1
 ScriptManager.RegisterClientScriptInclude(upnl_Sell,typeof(Page), "MainScript", ResolveClientUrl("~/scripts/main.js"))
Ну и убрать свое объявление скрипта из head...

или, если не поможет, подгружайте скрипт прямо в UpdatePanel
1
letalumil
0 / 0 / 0
Регистрация: 13.07.2011
Сообщений: 10
13.07.2011, 11:42  [ТС] 3
Цитата Сообщение от Bazzy Посмотреть сообщение
Как только не извращался чтобы оно у меня не заработало ))) но работает...

Попробуйте в обработчик PagePreLoad добавить:
Visual Basic
1
 ScriptManager.RegisterClientScriptInclude(upnl_Sell,typeof(Page), "MainScript", ResolveClientUrl("~/scripts/main.js"))
Ну и убрать свое объявление скрипта из head...

или, если не поможет, подгружайте скрипт прямо в UpdatePanel
Спасибо за отклик, но добавление в PreLoad не изменило ситуации. Буду тыкаться далее
0
maxim82
19 / 19 / 3
Регистрация: 05.07.2011
Сообщений: 41
14.07.2011, 10:21 4
letalumil, попробуйте в JavaScript getElementById
Javascript
1
2
3
4
5
6
function getSum() {
    var weight = document.getElementById('tbx_weight').value;
    var cost = document.getElementById('tbx_cost').value;
    var sum = weight * cost;
    document.getElementById('tbx_sum').value = sum;
}
ну и Id у TextBox'ов соответственно.
Когда вы ставите runat="server" у вашей формы меняется имя, посмотрите в FireBug название или в Source страницы.
0
14.07.2011, 10:21
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2011, 10:21

PHP скрипт внутри JavaScript
Доброго времени суток коддеры, Не могу решить задачку, нужно по клику выполнить яваскрипт (с...

Вызов JavaScript функции внутри php
Всем привет. Есть необходимость вызвать ява функцию внутри пхп. Собственно вот таким кодом я...

Объявление метода внутри объекта JAVASCRIPt
Как объявить метод внутри объекта JAVASCRIPT? Вот так написал, это правильно? &lt;script&gt; ...


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

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

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