2011-12-15 63 views
0

我想将一个变量传递给一个jQuery对话窗口。我使用的是经典的ASP,并且让onyl真的触及了jquery的世界。我花了几个小时研究和使用.data方法,但遇到了麻烦。你的时间和协助将非常激动人心!传递变量到jquery对话框

这是我剥夺了页:

$(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

对话框只是你的页面上的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的文档是非常useful- here are the docs for dialog.

编辑

在回答您的评论:我将放弃$('#dialog_link').click();声明和改变链接代码如下:

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

,然后添加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'

+0

谢谢你的快速回复。我看到你给了我一个在JS内部发起变量的例子。我应该提到: Mat41 2011-12-15 03:05:00