【发布时间】:2012-11-24 08:09:20
【问题描述】:
我正在调用页面刷新后选择组件ID的函数:
$(document).ready(
function() {
document.getElementById('form:#{myBDE.componentId}').focus();
document.getElementById('form:#{myBDE.componentId}').select();
}
)
我的提交按钮示例:
<h:form id="form">
<h:commandButton id="btnSubmit" action="#{myBDE.save}" type="submit" >
<f:ajax execute="@form" render="@form"/>
</h:commandButton>
...
</form>
如何创建每次单击任何提交按钮时都调用的相同函数(我使用的是 ajax,所以我在没有重新加载页面的情况下工作,document.ready 对我来说还不够)。有可能吗?
更新(部分功能解决方案):
var myFunc = function() {
document.getElementById('form:#{myBDE.componentId}').focus();
document.getElementById('form:#{myBDE.componentId}').select();
};
$(document).ready(function() {
myFunc();
$('input[type=submit]').click(myFunc);
});
我可以调用将onclick="return myFunc();"添加到h:commandButton的函数,问题是<f:ajax>在调用函数后渲染表单,所以选择和焦点被清除:(
【问题讨论】:
-
你不能在提交按钮中添加一个
onclick()事件处理程序并从中运行函数吗? -
是的,我可以,但我希望 jQuery 或 Javascript 有一些提交表单的通用方法(类似于 $(document).ready 在页面刷新后)
-
@gaffcz,jQuery 确实为此提供了一个内置系统。这叫做“委托”。我在回答中解释了。
-
@gaffcz 你最终会以相同的形式在某些
h:commandButton之后调用<f:ajax execute="@form" render="@form"/>吗?因为如果你这样做了,你最好将这些按钮转为使用<f:ajax execute="@form" render="@form"/>,并在这些按钮操作结束时调用myBDE.save,这里不需要jQuery... -
@Daniel: 嗯,我不确定我是否理解你,但我怎么能在
f:ajax之后打电话给MyBDE.save?
标签: javascript jquery jsf