Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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 IE 11仍然提交表单,但在单击处理程序中没有.submit()_Javascript_Jquery_Html_Forms - Fatal编程技术网

Javascript IE 11仍然提交表单,但在单击处理程序中没有.submit()

Javascript IE 11仍然提交表单,但在单击处理程序中没有.submit(),javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我很难用措辞回答我的问题 基本上,当一个表单中的提交按钮被点击时,我希望该按钮被禁用,并且在POST请求通过之前,按钮文本被替换为一个字体很棒的图标。我有以下jquery $('div').on('click', '.btn-disabler', function() { $(this).append("<i class='fa fa-spinner fa-pulse btn-loader'>").disable(true); $(this).find('.btn

我很难用措辞回答我的问题

基本上,当一个表单中的提交按钮被点击时,我希望该按钮被禁用,并且在POST请求通过之前,按钮文本被替换为一个字体很棒的图标。我有以下jquery

  $('div').on('click', '.btn-disabler', function() {
    $(this).append("<i class='fa fa-spinner fa-pulse btn-loader'>").disable(true);
    $(this).find('.btn-label').addClass('invisible');
    $(this).css("background-image", "none");
    if ($(this).parents('form') && !$(this).hasClass('btn-facebookauth')) {
      $(this).parents('form').submit();
    }
  });
$('div')。在('click','btn disabler',function()上{
$(this.append(“”).disable(true);
$(this.find('.btn label').addClass('invisible');
$(this.css(“背景图像”,“无”);
if($(this.parents('form')&&&!$(this.hasClass('btn-facebookauth')){
$(this.parents('form').submit();
}
});
还有我表格的按钮部分

<form>
   <button name="button" type="submit" class="btn btn-primary submit-button btn-disabler">
      <span class="btn-label">Log in</span>
   </button>
</form>

登录
我的问题是IE 11。在具有上述代码的IE中,单击按钮时,按钮文本消失,但fa图标不显示,按钮只是空白。这张表格交得很好

当我删除if语句时:

  $('div').on('click', '.btn-disabler', function() {
    $(this).append("<i class='fa fa-spinner fa-pulse btn-loader'>").disable(true);
    $(this).find('.btn-label').addClass('invisible');
    $(this).css("background-image", "none");
  });
$('div')。在('click','btn disabler',function()上{
$(this.append(“”).disable(true);
$(this.find('.btn label').addClass('invisible');
$(this.css(“背景图像”,“无”);
});
按钮正确显示图标并提交表单?为什么在我删除.submit()后表单仍在提交?在chrome中,当我删除if语句时,按钮的图标会正确更改,但表单不会提交,它只是挂起(如预期的那样)

我基本上是在解决IE中点击提交按钮后图标不出现的问题,而它在chrome中运行良好。

Javascript

// wait for document ready before trying to attach listener.
$(document).ready(function() {
  // Add a submit listener to the form
  $('#myform').submit(function(e){
    // save this jquery object into a variable as we might access this a few times. In this case it will be the form.
    var theform = $(this);
    // save the button to a variable.
    var thebtn = theform.find(".btn-disabler");
    // prevent the form from submitting (could also return false at the end of this function)
    e.preventDefault();
    thebtn.append("<i class='fa fa-spinner fa-pulse btn-loader'>").disable(true);
    theform.find('.btn-label').addClass('invisible');
    thebtn.css("background-image", "none");
    if (!thebtn.hasClass('btn-facebookauth')) {
      theform.submit();
    }
  });
});
//在尝试附加侦听器之前,请等待文档准备就绪。
$(文档).ready(函数(){
//将提交侦听器添加到表单
$('#myform')。提交(函数(e){
//将这个jquery对象保存到一个变量中,因为我们可能会访问它几次。
var theform=$(这是);
//将按钮保存到变量。
var thebtn=form.find(“.btn disabler”);
//阻止表单提交(此函数结束时也可能返回false)
e、 预防默认值();
thebtn.append(“”).disable(true);
form.find('.btn label').addClass('invisible');
css(“背景图像”,“无”);
如果(!thebtn.hasClass('btn-facebookauth')){
submit()格式;
}
});
});
html

<form id="myform">
   <button name="button" type="submit" class="btn btn-primary submit-button btn-disabler">
      <span class="btn-label">Log in</span>
   </button>
</form>

登录
以上所有内容都未经测试

// wait for document ready before trying to attach listener.
$(document).ready(function() {
  // Add a submit listener to the form
  $('#myform').submit(function(e){
    // save this jquery object into a variable as we might access this a few times. In this case it will be the form.
    var theform = $(this);
    // save the button to a variable.
    var thebtn = theform.find(".btn-disabler");
    // prevent the form from submitting (could also return false at the end of this function)
    e.preventDefault();
    thebtn.append("<i class='fa fa-spinner fa-pulse btn-loader'>").disable(true);
    theform.find('.btn-label').addClass('invisible');
    thebtn.css("background-image", "none");
    if (!thebtn.hasClass('btn-facebookauth')) {
      theform.submit();
    }
  });
});
//在尝试附加侦听器之前,请等待文档准备就绪。
$(文档).ready(函数(){
//将提交侦听器添加到表单
$('#myform')。提交(函数(e){
//将这个jquery对象保存到一个变量中,因为我们可能会访问它几次。
var theform=$(这是);
//将按钮保存到变量。
var thebtn=form.find(“.btn disabler”);
//阻止表单提交(此函数结束时也可能返回false)
e、 预防默认值();
thebtn.append(“”).disable(true);
form.find('.btn label').addClass('invisible');
css(“背景图像”,“无”);
如果(!thebtn.hasClass('btn-facebookauth')){
submit()格式;
}
});
});
html

<form id="myform">
   <button name="button" type="submit" class="btn btn-primary submit-button btn-disabler">
      <span class="btn-label">Log in</span>
   </button>
</form>

登录

以上所有内容均未经测试

提交按钮应提交表单,因此它在IE中的工作方式与预期相同。如果您希望通过表单手动提交表单。提交()请使用button类型的按钮


登录

提交按钮用于提交表单,因此它在IE中可以正常工作。如果要通过form.submit()手动提交表单,请使用button类型的按钮


登录

是否尝试返回false?为表单提供一个id,并在jQuery中编写提交处理程序。在提交处理程序中,添加一个event.preventDefault()。这会阻止表单的提交。好吧,您可以在表单本身上放置一个提交侦听器,而不是将侦听器放在按钮本身上,按钮本身也会提交表单。您尚未“删除”提交,您正在侦听“单击”提交按钮。为什么在我删除.submit()后表单仍在提交?这是浏览器的默认行为,当您单击表单时,表单中的按钮将始终提交表单。要更改它,您需要捕获click事件并调用
event.preventDefault()
,这将停止每个浏览器与该事件相关的默认操作。在这个示例中,它确实提交了我刚刚创建的,用Firefox/IE/Chrome测试过的内容。关于IE的问题,如果您仍然需要帮助,请考虑更新您的代码。运行此行时出错
.disable(true)是否尝试返回false?为表单提供id并在jQuery中编写提交处理程序。在提交处理程序中,添加一个event.preventDefault()。这会阻止表单的提交。好吧,您可以在表单本身上放置一个提交侦听器,而不是将侦听器放在按钮本身上,按钮本身也会提交表单。您尚未“删除”提交,您正在侦听“单击”提交按钮。为什么在我删除.submit()后表单仍在提交?这是浏览器的默认行为,当您单击表单时,表单中的按钮将始终提交表单。要更改它,您需要捕获click事件并调用
event.preventDefault()
,这将停止每个浏览器与该事件相关的默认操作。在这个示例中,它确实提交了我刚刚创建的,用Firefox/IE/Chrome测试过的内容。关于IE的问题,如果您仍然需要帮助,请考虑更新您的代码。运行此行时出错
.disable(true)