热搜:NVER node 开发 php

弹出窗口怎么处理返回值

2024-09-19 12:25:01
弹出窗口怎么处理返回值

PHP Yii

我用Yii框架做了个弹出框选择组,并返回给主页面   
    <?php    $this->beginWidget('zii.widgets.jui.CJuiDialog', array(            'id'=>'mydialog',    // additional javascript options for the dialog plugin    'options'=>array(            'title'=>'选择接收者组',            'autoOpen'=>false,                    'modal'=>true,                    'buttons'=>array(                    '确定'=>'js:function(){var rv;                    $("input[name="group-grid_c0[]"]:checkbox:checked").each(function{(rv+=$(this).val();)});    window.dialogArguments.getElementbyid("group").value=rv;    $(this).dialog("close");                    }                    ',                    '关闭'=>'js:function(){$(this).dialog("close");}',                    ),            ),    ));                               echo $this->renderPartial('/group/_choose',null,TRUE);                               $this->endWidget('zii.widgets.jui.CJuiDialog');                               // the link that may open the dialog    echo CHtml::link('选择接收者组', '#', array(            'onclick'=>'$("#mydialog").dialog("open"); return false;',    ));    ?>

现在问题是确定按钮老是有问题。我jquery不熟,请大家帮我看看。谢谢!

回复讨论(解决方案)

$("input[name="group-grid_c0[]"]:checkbox:checked").each(function{(rv+=$(this).val();)});
    window.dialogArguments.getElementbyid("group").value=rv;
    $(this).dialog("close");

改成

$("input[name=" +group-grid_c0[] +"]:checkbox:checked").each(function{(rv+=$(this).val();)});
    window.dialogArguments.getElementbyid("group").value=rv;
    $(this).dialog("close");

字符串和变量之间用+相连

另外善用firebug之类的工具来看看出错提示

说错  如果你这个group-grid_c0[]不是变量而是字符串的话   要改为

$("input[name= 'group-grid_c0[] ']:checkbox:checked").each(function{(rv+=$(this).val();)});
    window.dialogArguments.getElementbyid("group").value=rv;
    $(this).dialog("close");

谢谢anyilaoliu,group-grid_c0[]这个字符串的确有问题,要改成
$("input[name=\'group-grid_c0\[\]\']:checkbox:checked").each(function{(rv+=$(this).val();)});
两个引号和大括号都要转义。但是问题还是依旧。弹出窗口会直接嵌在主页面上。哪位可以解释一下吗?

嵌在主页面上是什么意思?  不明  上图看看呗

'确定'=>'js:function(){var rv;
                    $("input[name= \"group-grid_c0[] \"]:checkbox:checked").each(function{(rv+=$(this).val();)});
    window.dialogArguments. getElementById("group").value=rv;
    $(this).dialog("close");
                    }',

正常情况下应该是点击‘选择接收者组’连接后弹出一个窗口如下图:
而现在却是弹出窗口直接显示在主页面上了点击‘选择接收者组’也没有任何作用

啊,图贴反了

解决了吗?

一般来说要弹出的部分要先hide  然后当你点击的时候show

看样式是不是用了jquery_ui  首先看看隐藏了没 其次看看那个 选择接受者组 是否绑定了事件