我有以下按钮打开弹出窗口:
<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
中设置onChange
或id_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');
}
答案 0 :(得分:1)
注意:
ponerFocus
,因为你没有包含它。.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。