2013-05-14 6 views
0

Я преобразовал страницу ASP.NET DeleteUser.aspx в пользовательский элемент управления DeleteUser.ascx.Javascript не вызывается из пользовательского элемента управления ASP.NET

ASPX страница была простая яваскрипта функцию:

function deleteConfirmation() { 

    var xusername = document.getElementById('<%= txtusercn.ClientID %>').value; 
    if (xusername != null && xusername != "") { 
     var userTextBoxId = '<%= txtusercn.ClientID %>'; 
     var uname = document.getElementById(userTextBoxId).value; 
     return confirm('Are you sure you want to delete \'' + uname + '\'?'); 
    } 
    else { 
     alert('Please enter Usercn'); 
     return false 
    } 
} 

Теперь, так как это превращается в пользовательский элемент управления, DeleteUser.ascx, я первый переехал этот яваскрипта код в содержащем файл ASPX в <head> тега. Страница выбрала исключение. txtusercn не входит в объем содержащего aspx-файла.

Затем я переехал яваскрипта функцию в отдельный DeleteUser.js файла JavaScript и ссылки его из DeleteUser.ascx.cs так:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Page.ClientScript.RegisterClientScriptInclude(typeof(DeleteUser),"DeleteUserScript",@"../scripts/DeleteUser.js"); 
} 

Javascript функция не вызывается здесь, но когда я проверяю, содержащий файл ASPX-х , я вижу, что функция javascript зарегистрирована правильно.

Почему Java-функция не вызывается даже после того, как страница ссылается на яваскрипта файл DeleteUser.js


Edit:

Вызов функции, как это:

<asp:Button ID="btndeleteusercn" runat="server" Text="Delete Usercn" OnClick="btndeleteusercn_Click" OnClientClick="return deleteConfirmation();" /> 
+0

Как вы вызова функции? Что ваш браузер отлаживает консоль/firebug/dev tools/etc. скажем, если какая-либо ошибка? – EdSF

+0

Вы проверили произведенную разметку (тег скрипта)? Я бы поспорил, что есть проблема с правой папкой. Если ваша папка с скриптами находится в корне сайта, попробуйте использовать «/scripts/DeleteUser.js», кстати. вам не нужно @ для косой черты (/) –

+0

@EdSF: Я отредактировал вопрос, как я вызываю функцию. – Animesh

ответ

0

Клиент Идентификатор текстового поля отображаются как DeleteUser1_txtusercn, поэтому я изменил JavaScript, как это и это сработало:

function deleteConfirmation() { 

    var uname = document.getElementById('DeleteUser1_txtusercn').value; 
    if (uname != null && uname != "") { 
     return confirm('Are you sure you want to delete \'' + uname + '\'?'); 
    } 
    else { 
     alert('Please enter UserCN'); 
     return false; 
    } 
} 
1

Я думаю, «<% = txtusercn.ClientID%>» должно быть создано ошибка JavaScript a такая ссылка на управление сервером должна быть на странице, на которой существует соответствующий элемент управления. Вы должны передать ControlID через параметры функции, а затем он должен работать.

function deleteConfirmation(ctrlID) { 

var xusername = document.getElementById(ctrlID).value; 
if (xusername != null && xusername != "") { 
    var userTextBoxId = ctrlID; 
    var uname = document.getElementById(userTextBoxId).value; 
    return confirm('Are you sure you want to delete \'' + uname + '\'?'); 
} 
else { 
    alert('Please enter Usercn'); 
    return false 
}} 

и вызовите метод, передав идентификатор оттуда. , такие как

deleteConfirmation ('ID контроля')

1

Пожалуйста, попробуйте этот обновленный код.

function deleteConfirmation() { 

     var xusername = document.getElementById('<%= txtusercn.ClientID %>').value; 
     if (xusername != null && xusername != "") { 
      return confirm('Are you sure you want to delete \'' + xusername + '\'?'); 
     } 
     else { 
      alert('Please enter Usercn'); 
      return false 
     } 
return true; 

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