首页 > 解决方案 > 页面加载时触发一次点击

问题描述

我的页面中有一个表格,如下所示:

     <form id="shipping" action="some-action-url" method="post">
        <ul>
         <li>
          <input id="ship238280" name="method" value="238280|479435" type="radio" checked="checked">
          <label for="ship238280">Transport (€0,00)</label>
         </li>
         <li>
          <input id="ship292259" name="method" value="292259|580109" type="radio">
          <label for="ship292259">Pick up (€0,00)</label>
         </li>
        </ul>
      </form>

我使用的是 SaaS 平台,因此我对脚本的访问权限有限,需要利用实际可用的内容。所以我正在寻找更多的解决方法......

在上面的表格中,我检查了第一个选项。要实际设置第一个运输选项,我必须提交表格。然后在系统中设置此选项。

所以我有一个提交表单的函数:

function sendform(){
  var loader = $('.cart-loader');
  var form = $('#shipping');

  $(loader).show()
    $.ajax({
      type: "POST",
      url: $(form).attr('action'),
      data: $(form).serialize(),
      success: function(data) { 
       $(loader).hide()
       //$(this).unbind()
      } 
    });
}

当我单击其中一个选项时的单击事件:

 $('#shipping input').on('click', function(){
   sendform()
 });

我现在想要的是在页面加载时提交表单。所以我创造了这样的东西:

$(function(){
  $('#shipping input').each(function(){
    if($(this).is(':checked')){
      $(this).trigger('click') // or sendform()
     }
   });
});  

现在发生的情况是表单不断提交,因为每次页面重新加载(提交后)它都想再次提交!

知道它需要先提交才能设置选项,我该如何解决这个问题?

我在ajax成功功能中尝试了类似$(document).one('ready', function(){或类似的东西。$(this).unbind()

我有点失落:)所以非常感谢任何帮助!

标签: javascriptjquery

解决方案


尝试这样的事情:https ://jsfiddle.net/noidee/uvm6jw3b/

$(document).ready(function(){
  if( localStorage.getItem('submited') !== '1' ){
    $('#myform').submit();
    localStorage.setItem('submited', '1');
  }
});

推荐阅读