将参数传递给shown.bs.modal函数()

时间:2017-02-10 02:28:20

标签: jquery grails twitter-bootstrap-3 bootstrap-modal

如何将参数传递给shown.bs.modal事件?我目前正在使用Bootstrap 3.3.7,我有以下代码:

function openAppForm(name, number) {

        $("#form-content").modal({cache:false},'show');

};

$("#form-content").on("shown.bs.modal",function (<<PASS name and number here>>) {
                  document.getElementById('apply-frame').src="${g.createLink(controller: "apply", action: "index")}?name=" + name + "&number=" + number;
            })

由于

3 个答案:

答案 0 :(得分:2)

当遍历字段时,我从您的gsp中假设namenumber进入java脚本的世界。从那里开始与g.something绑定的功能一个grails变量和一个java脚本变量变得不可能超出了稍微过去通过捕获和结束例如给定URL所建议的。

所以不要做那样的事情而是创建链接正在点击的元素id

<div class="form-content" 
data-url="${g.creatLink(controller:controller,action:action,params:[name:name,number:number]);">

然后点击

 $('.form-content').on('click', function() {
    var url = $(this).attr('data-url')
  //now giving it full url 
   openAppForm(url)
 })

注意我将id更改为class,因为这似乎是多行的实例,不应该共享相同的id,它们可以共享同一个类,jquery将计算$(this)中的哪个类元素

答案 1 :(得分:2)

您可以将这些属性存储在元素本身上,然后使用数据功能访问它们。这是在Bootstrap docs上完成的。

function openAppForm(name, number) {
    $("#form-content").attr("data-name", name);
    $("#form-content").attr("data-number", number);
    $("#form-content").modal({cache:false},'show');
};

$("#form-content").on("shown.bs.modal", function () {
    var name  = $("#form-content").data("name");
    var phone = $("#form-content").data("number");

    $("#apply-frame").attr("src", "${g.createLink(controller: "apply", action: "index")}?name=" + name + "&number=" + phone;
})

答案 2 :(得分:1)

我确信有更优雅的方式,但你可以尝试这样的事情;

var modalShow;
function openAppForm(name, number) {
    modalShow = function(name, number) {
        document.getElementById('apply-frame').src="${g.createLink(controller: "apply", action: "index")}?name=" + name + "&number=" + number;
    };

    $("#form-content").modal({cache:false},'show');
};        

$("#form-content").on("shown.bs.modal", showModal);