欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

弹出窗口怎么处理返回值

程序员文章站 2022-05-09 10:06:29
...
PHP Yii 我用Yii框架做了个弹出框选择组,并返回给主页面
    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 首先看看隐藏了没 其次看看那个 选择接受者组 是否绑定了事件