2009-12-30 5 views
0

вызова функции Js с использованием OnClick ...JavaScript вопрос

onclick="SubmitAge(66, 'ctl00_MainContent_arTo_upAgeRange')" 

функция просто называет UpdatePanel от клиента ... но говоря объект ожидается в OnClick = часть !!!

вот функция, что-то не так с кодом?

function SubmitAge(age, UpdatePanelID) { 
    $get('HiddenAge').value = age; 
    __doPostBack(UpdatePanelID); 
} 

EDIT: SUBMITAGE ФУНКЦИЯ IS ВНУТРИ .JS FILE (AGERANGE.JS) И ТОЛЬКО КОГДА Перенесено ЗДЕСЬ ЭТО ОСТАНОВИТЬ РАБОТУ: ВОТ ССЫЛКИ МЕТОД/HEADERS ОТ ASCX UserControl INWHICH ЭТО ВСЕ СОДЕРЖАЩЕГОСЯ. ..

% @ Control Language = "VB" ИмяКласса = "AgeRange" %

% @ Register Ассамблеи = "AjaxControlToolkit" Пространство имен = "AjaxControlToolkit" TagPrefix = "AjaxCT" %

сценарий SRC = "AgeRange.js" type = "text/javascript"/script

(стрелка теги удалены здесь, как это обыкновение дисплея, подсказка: StackOverflow !!!)

им печатая его, как это с сервера ...

Public Sub AppendToSB(ByRef sb As StringBuilder, ByVal CurNo As Byte, Optional ByVal clickedNo As Byte = 0) 
    Dim sConfirmClick = "" 

    If clickedNo = CurNo Then ' maybe dont make it clickable... 
     sConfirmClick = "return confirm('The number " & CurNo.ToString & " is already selected, are you sure you want to select it again?');" 
    End If 

    sb.Append("<a href=""#"" onclick=""" & sConfirmClick & "SubmitAge(" & CurNo.ToString & ", '" & upAgeRange.ClientID & 
    "')"" runat=""server"">" & CurNo.ToString & "</a>") 

End Sub 
+0

проблема эта часть ... OnClick = "SubmitAge (66, 'ctl00_MainContent_arTo_upAgeRange')" (это, как напечатано на источник клиента –

+0

ли это на самом деле имеет ничего общего с ASP.NET, C#, Ajax , или vb.net? – MatrixFrog

+0

В зависимости от контекста вопроса это может быть синтаксическое смешение между тегами сервера ASP.NET, синтаксисом JavaScript/HTML и синтаксисом C#/VB.NET. Сначала нам нужно будет увидеть еще один код. – Eilon

ответ

1

Полного переписывание моего поста после нескольких разъяснения:

Проблема заключается в том, что страница ASPX ссылается на пользовательский элемент управления ASCX, который находится в другой папке. Этот элемент управления ASCX имеет тег HTML <script>, который использует относительный путь к файлу JS.

Решение правильно разрешить URL в файл JS с помощью некоторого дополнительного кода:

<script src="<%= ResolveClientUrl("MyScriptLibrary.js") %>" type="text/javascript"> 
</script> 

Чтобы предотвратить файл сценария из него ссылается несколько раз, я рекомендую использовать подходы, указанные в этом другом сообщении: ASP.NET dynamically insert code into head

Вот как это выглядит в коде пользовательского элемента управления:

// Register a script reference: 
Page.ClientScript.RegisterClientScriptInclude(GetType(), "myLibraryScript", "~/Scripts/MyScriptLibrary.js"); 
+0

его тег html ... так что когда я нажимаю тег html , он обновляет updatePanel из js-функции внутри js-файла (submitAge) –

+0

Попробуйте это, затем: onclick = "alert (SubmitAge)" И посмотрим, что произойдет. Это скажет вам, задан ли параметр SubmitAge. – Eilon

+0

попробовал, ничего себе, функция не работает, мне интересно, почему? это мой тег ссылки в пользовательском элементе управления ... <% @ Control Language = "VB" ClassName = "AgeRange"%> <% @ Регистрация Assembly = "AjaxControlToolkit" Пространство имен = "AjaxControlToolkit" TagPrefix = "AjaxCT"% >

0

здесь как я решил это сделать, ResolveClientURL важен, статическая ссылка не всегда будет работать, также если проверка будет предотвращать добавление скрипта несколько раз на одной странице, если вы используете несколько раз на одной странице несколько раз ...

If Not Page.ClientScript.IsClientScriptIncludeRegistered("AgeRangeJS") Then ' no point in registering it twice! 
     ' AND its registered in the header, where it should be, not two copies in the body :) 
     Page.ClientScript.RegisterClientScriptInclude("AgeRangeJS", ResolveClientUrl("AgeRange.js")) ' ResolveClientUrl("AgeRange.js") 
    End If 

+0

BTW нет необходимости проверять IsClientScriptIncludeRegistered. ASP.NET автоматически исключает дубликаты. никогда не нужно. Его действительно нужно использовать только в том случае, если вам нужно принять какое-то другое решение, основанное на том, был ли скрипт уже зарегистрирован (хотя я не знаю, когда это произойдет). – Eilon

+0

ahh thanks eilo n, удалит это ... просто хотел сказать, используя это без resolveclienturl, не работал для меня, даже для плаката оригинала, который, как я полагаю, предположил, что это должно работать с самого пользователя UserControl ... (если они не ошибаются, и они имели в виду для его работы с страницы aspx). –

Смежные вопросы