弹出窗口后如何正确触发动作

时间:2014-10-23 19:05:42

标签: javascript jquery coldfusion

我有以下按钮打开弹出窗口:

<button type="button" id="btnBuscarCuenta" 
   onClick="javascript:AbrirPopUpBusqueda('id_AyudaCuentas',
              'pop_cuentas_contables.cfm','', '900px', '600px');AsignaCuentas();"> 
   <img src="../images/buscar.png" alt="Clic para buscar Cuenta Bancaria"/>
</button>

如您所见,调用弹出窗口的方法称为AbrirPopUpBusqueda。其中一个参数是id_AyudaCuentas是隐藏的输入,它将在弹出窗口关闭后接收值。

<input type="hidden" name="id_AyudaCuentas" id="id_AyudaCuentas"/>

输入&#39; id_AyudaCuentas&#39;获取值,它应该触发一个函数AsignaCuentas(),它只分离值并将它们分成其他文本输入:

<cfinput id="id_Cuenta" name="id_Cuenta" type="text" value="#id_Cuenta#"  >
<cfinput id="id_SCuenta" name="id_SCuenta" type="text" value="#id_SCuenta#">
<cfinput id="id_SSCuenta" name="id_SSCuenta" type="text" value="#id_SSCuenta#">
<cfinput id="id_SSSCuenta" name="id_SSSCuenta" type="text" value="#id_SSSCuenta#">

问题是没有触发事件,或者只是再次单击按钮时触发事件(这是不良行为)。我尝试在隐藏的输入onBlur中设置onChangeid_AyudaCuentas属性,但它也无法正常工作。

有什么建议吗?

编辑:我包含了AsignaCuentas()函数:

function AsignaCuentas()
 {
     if ($x('id_AyudaCuentas').value != '')
     {
         ArregloCuentas= $x('id_AyudaCuentas').value.split('|');
         $x('id_Cuenta').value= ArregloCuentas[0];                               
         $x('id_SCuenta').value= ArregloCuentas[1];
         $x('id_SSCuenta').value= ArregloCuentas[2];
         $x('id_SSSCuenta').value= ArregloCuentas[3];
    }
     ponerFocus('id_SSSCuenta');
}

2 个答案:

答案 0 :(得分:1)

这里是jQUery demonstration

注意:

  • jsfiddle为隐藏字段设置一个值,并在其上触发change事件。
  • 我必须发表评论ponerFocus,因为你没有包含它。
  • 我添加了一个示例按钮来触发更改,因为我没有弹出窗口。
  • Jquery的.change()在没有用户输入的情况下不会触发。但是,您可以使用.trigger('change')来触发事件。您的弹出窗口可以设置隐藏字段的值并附加.trigger('change')

样本表格:

<form id="motherform">
    Main Field: <input type="hidden" name="id_AyudaCuentas" id="id_AyudaCuentas" value="a|b|c|d">
    <input type="button" value="Click this button to change hidden value." onclick="$('#id_AyudaCuentas').val('this|is|a|test').trigger('change')">
    <input id="id_Cuenta" name="id_Cuenta" type="text" value="#id_Cuenta#"  >
    <input id="id_SCuenta" name="id_SCuenta" type="text" value="#id_SCuenta#">
    <input id="id_SSCuenta" name="id_SSCuenta" type="text" value="#id_SSCuenta#">
    <input id="id_SSSCuenta" name="id_SSSCuenta" type="text" value="#id_SSSCuenta#">
</form>

$(document).ready(function() {
    $("#id_AyudaCuentas").change(function(){
        ArregloCuentas = $('#id_AyudaCuentas').val();
        var AC_Array = ArregloCuentas.split('|');
        if (AC_Array.length == 4) {
            $('#id_Cuenta').val(AC_Array[0]);                                                            
            $('#id_SCuenta').val(AC_Array[1]);
            $('#id_SSCuenta').val(AC_Array[2]);
            $('#id_SSSCuenta').val(AC_Array[3]);
        }
         // ponerFocus('id_SSSCuenta');
    });
});

我希望您可以使用弹出窗口来实现所需的效果。

答案 1 :(得分:0)

好的,让我们这样试试吧: 改变你的代码。而不是以下:

<cfinput id="id_Cuenta" name="id_Cuenta" type="text" value="#id_Cuenta#"  >
<cfinput id="id_SCuenta" name="id_SCuenta" type="text" value="#id_SCuenta#">
<cfinput id="id_SSCuenta" name="id_SSCuenta" type="text" value="#id_SSCuenta#">
<cfinput id="id_SSSCuenta" name="id_SSSCuenta" type="text" value="#id_SSSCuenta#">

试试这个:

<cfoutput>
<input id="id_Cuenta" name="id_Cuenta" type="text" value="#id_Cuenta#"/>
<input id="id_SCuenta" name="id_SCuenta" type="text" value="#id_SCuenta#"/>
<input id="id_SSCuenta" name="id_SSCuenta" type="text" value="#id_SSCuenta#"/>
<input id="id_SSSCuenta" name="id_SSSCuenta" type="text" value="#id_SSSCuenta#"/>
</cfoutput>

据我所知,您使用cfinput的唯一原因是它会自动呈现#id _ **#值。但是你不需要它,它可能可能弄乱你干净的JS。