将变量传递给jquery对话框

时间:2011-12-15 02:24:12

标签: jquery-ui asp-classic

我想将变量传递给jquery对话框窗口。我正在使用经典的ASP并且onyl真的触及了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 个答案:

答案 0 :(得分:1)

对话框只是您网页上的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文档非常有用 - here are the docs for dialog.

修改

回复您的评论:我会删除$('#dialog_link').click();语句并将链接代码更改为以下内容:

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

然后添加要在click事件上调用的JavaScript函数:

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

修改2

在ASP循环中,这样的东西应该可以解决问题:

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

这将在页面上创建一个<a></a>元素,其中onclick处理程序将所需的值传递给openDialog,使对话框可以访问它。

我稍微更改了链接的代码,以便它全部适合一行,但如果您愿意,可以随时添加class='OrangeButton'以及所有内容。