Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每个submit按钮调用相同的函数_Javascript_Jquery_Jsf - Fatal编程技术网

Javascript 每个submit按钮调用相同的函数

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

我正在调用用于在页面刷新后选择组件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>

我可以调用函数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