Javascript 每个submit按钮调用相同的函数
我正在调用用于在页面刷新后选择组件ID的函数:Javascript 每个submit按钮调用相同的函数,javascript,jquery,jsf,Javascript,Jquery,Jsf,我正在调用用于在页面刷新后选择组件ID的函数: $(document).ready( function() { document.getElementById('form:#{myBDE.componentId}').focus(); document.getElementById('form:#{myBDE.componentId}').select(); } ) 我的提交按钮示例: <h:form id="form"> <h:commandBu
$(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>
我可以调用函数adding
onclick=“return myFunc();”
到h:commandButton
,问题是,
在调用函数后呈现表单,所以选择和焦点被清除:(如果您在表单上有不同的ID或名称,只需执行如下操作
$(document).ready(function(){
$('#btn1, #btn2, #btn3').on('click', function(evt){
evt.preventDefault();
//your code
$(this).submit(); // or not submit, your choice
});
});
如果你有不同的身份证或名字,这只是做一些类似的事情
$(document).ready(function(){
$('#btn1, #btn2, #btn3').on('click', function(evt){
evt.preventDefault();
//your code
$(this).submit(); // or not submit, your choice
});
});
为函数指定一个名称(目前为匿名函数),然后在需要时调用该函数
$(document).ready(
onPageLoad(); // call it when page loads
$('form').submit(onPageLoad); // also call whenever a form is submitted
)
function onPageLoad() {
document.getElementById('form:#{myBDE.componentId}').focus();
document.getElementById('form:#{myBDE.componentId}').select();
return true;
}
为函数指定一个名称(目前为匿名函数),然后在需要时调用该函数
$(document).ready(
onPageLoad(); // call it when page loads
$('form').submit(onPageLoad); // also call whenever a form is submitted
)
function onPageLoad() {
document.getElementById('form:#{myBDE.componentId}').focus();
document.getElementById('form:#{myBDE.componentId}').select();
return true;
}
这应该行得通
$('input[type="submit"]').click(function(){
document.getElementById('form:#{myBDE.componentId}').focus();
document.getElementById('form:#{myBDE.componentId}').select();
});
事实上,您可以将一个函数绑定到任何事件。在这种情况下,它是属性type=submit的输入标记的click事件,这应该起作用
$('input[type="submit"]').click(function(){
document.getElementById('form:#{myBDE.componentId}').focus();
document.getElementById('form:#{myBDE.componentId}').select();
});
事实上,您可以将函数绑定到任何事件。在这种情况下,它是属性type=submit的输入标记的单击事件
$(document).ready( function (){
$('input[type=submit]').click( function (){
// Whatever you want on submit button click option.
}
});
这将抓取页面上的每个提交按钮,并将单击事件绑定到该按钮,并且在任何提交按钮单击时都会调用此代码。尝试此操作
$(document).ready( function (){
$('input[type=submit]').click( function (){
// Whatever you want on submit button click option.
}
});
这将抓取页面上的每个提交按钮,并将单击事件绑定到该按钮,并且在任何提交按钮单击时都将调用此代码。您应该将处理程序委托给更高级别的dom元素:
$(document).ready(function() {
$('h:body').on('click', 'input[type=submit]', function() {
document.getElementById('form:#{myBDE.componentId}').focus();
document.getElementById('form:#{myBDE.componentId}').select();
});
});
看
当提供选择器时,事件处理程序称为
委托。事件直接在上发生时不调用处理程序
绑定元素,但仅适用于
匹配选择器。jQuery将事件从事件目标向上冒泡
到处理程序所附加的元素(即,最内层到
最外层的元素),并为沿着该元素的任何元素运行处理程序
与选择器匹配的路径
后来:
委派事件的优点是,它们可以从中处理事件
以后添加到文档中的子元素。通过
选择一个元素,该元素保证在
已附加委派事件处理程序,您可以使用委派事件
避免频繁附加和删除事件处理程序
因此,该类型的所有元素都将处理该事件,即使它们稍后通过ajax添加。请注意,我在这里使用
h:body
作为要委托的元素,但您可以使用document.ready time时存在的任何元素,并保证是所有提交输入的祖先。您应该将处理程序委托到更高级别l dom元素:
$(document).ready(function() {
$('h:body').on('click', 'input[type=submit]', function() {
document.getElementById('form:#{myBDE.componentId}').focus();
document.getElementById('form:#{myBDE.componentId}').select();
});
});
看
当提供选择器时,事件处理程序称为
委托。事件直接在上发生时不调用处理程序
绑定元素,但仅适用于
匹配选择器。jQuery将事件从事件目标向上冒泡
到处理程序所附加的元素(即,最内层到
最外层的元素),并为沿着该元素的任何元素运行处理程序
与选择器匹配的路径
后来:
委派事件的优点是,它们可以从中处理事件
以后添加到文档中的子元素。通过
选择一个元素,该元素保证在
已附加委派事件处理程序,您可以使用委派事件
避免频繁附加和删除事件处理程序
因此,将为该类型的所有元素处理事件,即使它们稍后通过ajax添加。请注意,我在这里使用
h:body
作为要委托的元素,但您可以使用document.ready time时存在的任何元素,并保证它们是所有提交输入的祖先。您不能只添加一个onclick()
事件处理程序到submit按钮并从中运行函数?是的,我可以,但我希望,jQuery或Javascript有一些提交表单的常用方法(比如$(文档)。页面刷新后准备就绪)@gaffcz,jQuery确实有一个内置的系统。它被称为“委派”。我在回答中解释过。@gaffcz在某些h:commandButton
之后,你最终会以相同的形式调用
吗?因为如果你这样做了,你最好将这些按钮转到
并调用myBDE。在这些botton操作结束时保存,这里不需要jQuery…@Daniel:嗯,我不确定是否我很理解你,但是我如何在f:ajax
之后调用MyBDE.save
?你不能只在提交按钮中添加一个onclick()
事件处理程序并从中运行函数吗?是的,我可以,但我希望jQuery或Javascript有一些提交表单的常用方法(比如$(文档)。页面刷新后准备就绪)@gaffcz,jQuery有一个内置的系统,叫做“委派”。我在回答中解释过。@gaffcz在某些h:commandButton
之后,你最终会以相同的形式调用
吗?因为如果你这样做了,你最好将这些按钮转到
并调用myBDE。在这些botton操作结束时保存,这里不需要jQuery…@Daniel:嗯,我不确定是否我很理解你,但是我怎么能在f:ajax
之后调用MyBDE.save
?不需要提交表单?$(这个)。parents('form')。submit()
这对我不起作用(使用ajax调用,它在没有ajax的情况下工作),函数(evt)永远不会被调用:(不需要提交表单?$(这个)。parents('form')。submit()
这对我来说不起作用(使用ajax调用,它在没有ajax的情况下工作),函数(evt)永远不会被调用:(或者如果您有提交按钮的id或类,您可以将其用作选择器类似的$(“#提交按钮_id”)。单击(函数(){//Your function calls});谢谢,但它不起作用……函数从未被调用:(我已经更新了我的问题-添加exa