UpdatePanel и Javascript - PullRequest
       15

UpdatePanel и Javascript

1 голос
/ 14 января 2010

У меня есть встроенный скрипт, такой как этот, который переключает между редактированием и отображением div. Если он находится внутри UpdatePanel, для его работы требуется два щелчка. Если я удаляю UpdatePanel, он отлично работает одним щелчком мыши.

<a href="#" onclick="edit(event,'ctl00_CPH1_ctl00_win1')">Edit</a>

Может кто-нибудь помочь, пожалуйста?

Спасибо

EDIT: Функция редактирования:

function edit(e, id) {
    var editdiv = $('#' + id).find('.edit');
    var cntdiv = $('#' + id).find('.content');

    if (editdiv.css('visibility') == 'hidden') {
        editdiv.css('visibility') == 'visible'
        cntdiv.css('visibility') == 'hidden'
        cntdiv.hide();
        editbox.show()
    }
    else {
        editdiv.css('visibility') == 'hidden'
        cntdiv.css('visibility') == 'visible'
        cntbox.show();
        editbox.hide()
    }

    stopEventBubble(e); // Code to cancel event bubbling;
}

Ответы [ 2 ]

1 голос
/ 14 января 2010

Используете ли вы ScriptManager для регистрации функции редактирования?

protected void Page_Load(object sender, EventArgs e)
{
    string jsEdit = @"function edit(event, id) {}";
    ScriptManager.RegisterClientScriptBlock(this, GetType(), "editFunction", jsEdit);
}

Если ваш код находится во внешнем файле, вы можете зарегистрировать его в ScriptManager или ScriptManagerProxy в aspx для вашей страницы:

<ScriptManager runat="server" id="ScriptManager1">
    <Scripts>
        <asp:ScriptReference path="~/js/edit.js" />
    </Scripts>
</asp:ScriptManager>

EDIT: хорошо, я знаю, в чем проблема сейчас. Вы не устанавливаете видимость CSS для начала. Так что либо вам нужно установить видимость css, либо вы можете изменить функцию редактирования, следуя следующей логике:

function edit(e, id) {
    var editdiv = $('#' + id).find('.edit');
    var cntdiv = $('#' + id).find('.content');
    //I reversed it to look for visible instead of hidden.  The main problem with this approach and your other approach is that the original value is inherited.
    if (editdiv.css('visibility') == 'visible') {
        editdiv.css('visibility') == 'hidden'
        cntdiv.css('visibility') == 'visible'
        cntbox.show();
        editbox.hide()
    }
    else {
        editdiv.css('visibility') == 'visible'
        cntdiv.css('visibility') == 'hidden'
        cntdiv.hide();
        editbox.show()
    }

    stopEventBubble(e); // Code to cancel event bubbling;
}

Другой вариант потребует от вас установки следующих параметров в разделах «edit» и «content».

<div id="edit" style="visibility:hidden"> ... </div>
<div id="content" style="visibility:visible"> ... </div>

Если вам понадобится дополнительная помощь, мне нужно будет просмотреть ваш aspx-код, касающийся панели обновления, редактирования и содержимого.

0 голосов
/ 14 января 2010

Попробуйте это:

<a href="#" onclick="edit(event,'ctl00_CPH1_ctl00_win1'); return false;">Edit</a>

Редактировать
Как сказал Крис : Если вы вводите функцию при нажатии на ссылку «Изменить», функция не будет существовать при первом нажатии на ссылку «Изменить».

Что вы можете сделать, это добавить функцию внутри тега <script> в разделе <head> разметки:

<head>
  <script>
    function edit(event, id) {
      // Your code here
    }
  </script>
</head>

Или в отдельном файле .js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...