передать переменную в JQuery диалог - PullRequest
0 голосов
/ 15 декабря 2011

Я хочу передать переменную в диалоговое окно jquery.Я использую классический ASP, и он действительно коснулся мира jquery.Я потратил несколько часов на изучение и использование метода .data, но у меня возникли проблемы.Ваше время и помощь будут очень сильно сокращены!

Вот моя урезанная страница:

    $(function(){
            // Dialog           
            $('#dialog').dialog({
                autoOpen: false,
                show: "slide",
                hide: "fade",
                width: 452,
                modal: true,
                buttons: {
                    "Ok": function() { 
                        PostItNote.submit();
                        $(this).dialog("close"); 
                    }, 
                    "Cancel": function() { 
                        $(this).dialog("close"); 
                    } 
                }
            });

            // Dialog Link
            $('#dialog_link').click(function(){
                $('#dialog').dialog('open');
                return false;
            }); 
        });

и вот как я называю окно:

<a href='#' id='dialog_link' CLASS='OrangeButton'> Show Window </a>

и содержимое моего окна:

<div ID="dialog" TITLE="Periodic Report">
    stuff here
</div>

Почему я не могу этого сделать:

<a href='#' id='dialog_link(someValue)' CLASS='OrangeButton'> Show Window </a>

Заранее спасибо

Как это используется в цикле ASPэто:

   do until Products.EOF
      --other code here---
      <a href='#' id='dialog_link(Products(0))' CLASS='OrangeButton'>
      --other code here---
      products.moveNext
   loop

1 Ответ

1 голос
/ 15 декабря 2011

Диалоговое окно - это просто div на вашей странице, поэтому оно не может быть "передано" значению.Тем не менее, он может управляться любыми переменными JavaScript в области видимости.Вы можете изменить свой обработчик кликов, чтобы использовать переменную для управления диалогом:

var myVariable = "Some new text for the dialog";

$('#dialog_link').click(function(){

    //New code to "pass" a value to the dialog
    $('#dialog').text(myVariable);

    $('#dialog').dialog('open');
    return false;
});

Или вы можете использовать open член диалога:

...
width: 452,
open: function() { $('#dialog').text(myVariable); },
modal: true,
...

Чтобы внести изменения вдиалоговое окно div всякий раз, когда он открывается.

Код id='dialog_link(someValue)' ничего не будет делать, поскольку атрибут id не может выполнять вызовы функций, это могут делать только обработчики событий, такие как onchange.Даже если это возможно, dialog_link не является функцией, которой можно передать значение.Это просто id другого элемента.

Я уверен, что вы, вероятно, уже знаете, но документация jQuery очень полезна - вот документы для диалога.

Редактировать

В ответ на ваш комментарий: я бы бросил оператор $('#dialog_link').click(); и изменил код ссылки на следующий:

<a href='#' class='OrangeButton' onclick='openDialog(someValue);'>Show Window</a>

А затем добавьте JavaScript-функцию, которая будет вызываться при событии click:

function openDialog(value) {
    $('#dialog').text(value);
    $('#dialog').dialog('open');
}

Edit 2

Внутри цикла ASP что-то вроде этого должно помочь:

Response.Write("<a href='#' onclick='openDialog(" & Products(0) & ");'>Show</a>")

Это создаст на странице элемент <a></a> с обработчиком onclick, который передает требуемое значение в openDialog, делая его доступным для диалога.

Iслегка изменил код ссылки, чтобы он умещался в одну строку, но вы всегда можете добавить обратно class='OrangeButton' и все это, если хотите.

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