1

嗨,我有一个 cfoutput 来循环查询,并且我正在使用动态变量在客户端显示布局,除了绑定仅在我不使用 jquery 的模式时才有效。

这是我的冷融合代码

<cfoutput query = "RSSelect.rs">
<div id="editar_#idu_programa_detalle#" title="Editar">
<table>
    <tr>
        <td align="right" valign="middle">Estado:</td>
        <td align="left" valign="middle">
            <cfselect 
                title="id_Estado" 
                selected="#RSSelect.RS.idu_estado_salida#" 
                id="idu_estado_salida_#idu_programa_detalle#" 
                name="idu_estado_salida_#idu_programa_detalle#" 
                query="RSEstados.RS" 
                display="nb_Estado" 
                value="id_Estado" 
                queryPosition="below" 
                style="width:200px" 
                required="yes" 
                message="El estado es requerido" 
            >
                <option value="0" >Seleccione estado  </option>
            </cfselect>&nbsp;&nbsp;
        </td>
        <td align="left" valign="middle">Ciudad:
            <cfselect 
                title="Seleccione ciudad" 
                selected="#RSSelect.RS.idu_ciudad_salida#" 
                name="idu_ciudad_salida_#idu_programa_detalle#" 
                id="idu_ciudad_salida_#idu_programa_detalle#" 
                bind="cfc:#Application.CfcPath#.solicitudes_cm_uo.obtenerCiudades({idu_estado_salida_#idu_programa_detalle#@change})" 
                bindonload="yes"  
                value="id_Ciudad" 
                display="nb_Ciudad" 
                queryPosition="below"  
                style="width:200px" 
                required="yes" 
                message="El campo ciudad no debe de quedar vacio"
            >
            </cfselect>
        </td>
    </tr>
</table>
</div>
</cfoutput>

和jQuery代码

<link rel="stylesheet" href="../css/smoothness/jquery-ui.css" />
    <script src="../js/jquery-1.9.1.js"></script>
    <script src="../js/jquery-ui.js"></script>
    <cfoutput query = "RSSelect.rs">
        <script>
            $(function()
            {
                $( "##editar_#idu_programa_detalle#" ).dialog(
                {
                    modal:true,
                    autoOpen: false,
                    height:999,
                    width:999,
                    buttons:
                    {
                        "Editar": function()
                        {
                            alert('se edito correctamente');
                            $( this ).dialog( "close" );
                        },
                        "Cancelar": function()
                        {
                            alert('se cancelo correctamente');
                            $( this ).dialog( "close" );
                        }
                    }
                });
            });
        </script>
        </cfoutput>

我很感激你的帮助。

我也尝试过使用 showmodaldialog 但它只适用于 IE

使用模式对话框的任何其他选项都可以。

4

2 回答 2

2

看起来好像您的 jQuery 代码包含在 HTML 文档的标题中。当然,您的 CFML 包含在 HTML 文档的正文中。使用 jQuery 时,您需要注意仅当 DOM 中的项目可用时才访问它们。$(document).ready()您可以通过将 jQuery 代码包装在函数中来避免其中一些问题。像这样的东西...

<cfoutput query = "RSSelect.rs">
    <script>
        $(document).ready(function()
        {
            $( "##editar_#idu_programa_detalle#" ).dialog(
            {
                modal:true,
                autoOpen: false,
                height:999,
                width:999,
                buttons:
                {
                    "Editar": function()
                    {
                        alert('se edito correctamente');
                        $( this ).dialog( "close" );
                    },
                    "Cancelar": function()
                    {
                        alert('se cancelo correctamente');
                        $( this ).dialog( "close" );
                    }
                }
            });
        });
    </script>
</cfoutput>

这是有关 ready() 函数的文档。


此后已在问题中更正的初始问题

我不确定这是否是问题,但您的<div>标签位置不正确。开始<div>标签在<cfoutput>块内...

<cfoutput query = "RSSelect.rs">
<div id="editar_#idu_programa_detalle#" title="Editar">

但结束标签在循环之后</cfoutput>,因此在循环之外......

</cfoutput>
</div>

结束</div>标记应该块内,cfoutput以便每个打开的 div 也被关闭......

</div>
</cfoutput>
于 2013-11-04T13:38:19.037 回答
0

基本上是调用一个函数来打开模态对话框。

好吧,我认为我编码太多但这里是 =)。

<script language="javascript">
function OpenPop(idu_programa,idu_programa_detalle)
{
    var x = false;
    //alert('algo');
    x = showModalDialog('pop_editar_detalle_supervision.cfm?idu_programa='+idu_programa+'&idu_programa_detalle='+idu_programa_detalle,'dialogHeight:1000px;dialogWidth:1000px;');
    if (typeof x == 'undefined')
    {
        alert('Edicion cancelada');
    }
    else
    {
        document.getElementById('idu_programa_detalle_pop').value = idu_programa_detalle
        document.getElementById('idu_estado_salida_pop').value = x[0];
        document.getElementById('idu_ciudad_salida_pop').value = x[1];
        document.getElementById('fec_salida_pop').value = x[2];
        document.getElementById('opc_meridiano_salida_pop').value = x[3];
        document.getElementById('fec_supervision_inicial_pop').value = x[4];
        document.getElementById('fec_supervision_final_pop').value = x[5];
        document.getElementById('opc_meridiano_supervision_inicio_pop').value = x[6];
        document.getElementById('form1').submit();
    }       
}
</script>

然后我在一个数组上返回值然后我把这些值放在隐藏的输入上,以便在提交后调用它们

这是返回数组的模态 javascript 代码。

<script language="javascript">
function Editar()
{
    var valoresDevueltos = new Array();
    valoresDevueltos[0] = document.getElementById('idu_estado_salida').value;
    valoresDevueltos[1] = document.getElementById('idu_ciudad_salida').value;
    valoresDevueltos[2] = document.getElementById('fec_salida').value;
    if(document.getElementById('amSalida').checked)
    {
        valoresDevueltos[3] = document.getElementById('amSalida').value;
    }
    else
    {
        valoresDevueltos[3] = document.getElementById('pmSalida').value;
    }
    valoresDevueltos[4] = document.getElementById('fec_supervision_inicial').value;
    valoresDevueltos[5] = document.getElementById('fec_supervision_final').value;
    //Checking which radioButton is checked
    if(document.getElementById('amSupervision').checked)
    {
        valoresDevueltos[6] = document.getElementById('amSupervision').value;
    }
    else
    {
        valoresDevueltos[6] = document.getElementById('pmSupervision').value;
    }
    window.returnValue = valoresDevueltos;
    window.close();
}
</script>

如果不让我知道以改善我的答案,希望足够清楚谢谢您的耐心等待=)

于 2013-11-05T05:43:11.397 回答