【问题标题】:resume submit after event.preventDefault在 event.preventDefault 之后恢复提交
【发布时间】:2014-04-13 22:41:29
【问题描述】:

我正在尝试实现一个简单的数据流,但一定有一些我没有得到的东西。

  • 我有一个有 n 行的表。
  • 每一行都有自己的表单,其中是提交按钮和隐藏输入。
  • 我希望用户单击按钮并显示提示。
  • 他可以在此提示中插入日期。
  • 他插入日期后,隐藏的输入值为选中的日期并提交表单。

这是我正在使用但没有成功的代码:

<td>
    <form id="form_{{ document.id }}" class="form-fattura-saldata" action="my-file.php" method="post">
        <input type="hidden" class="data-pagamento" name="data-pagamento" value="">
        <button class="btn btn-default fattura_saldata" type="submit">Saldata</button>
    </form>
</td>

和jquery代码:

var saldataFatturaChange = function(event) {
    event.preventDefault();
    var prompt = bootbox.prompt("Confermare la data di pagamento", function(result) {
        if (result === null) {
        } else {
            $('.data-pagamento').val(result);
        }
    });
    $('.bootbox-input').daterangepicker({
        startDate: new Date(),
        format: 'DD/MM/YYYY',
        singleDatePicker: true
    });
};

$('.form-fattura-saldata').each(function() {
    $(this).on('submit', saldataFatturaChange);
});

主要问题是我可以阻止提交操作,但我不知道如何重新提交该表单。而且我不知道在用户选择日期后如何分配该表单的隐藏输入的值。

任何帮助将不胜感激。

附言我正在使用引导程序,但这根本不相关。

【问题讨论】:

    标签: jquery event-handling twitter-bootstrap-3 each prompt


    【解决方案1】:

    这就是我解决问题的方式:

    var saldataFatturaChange = function(event) {
        event.preventDefault();
        var currentTarget = event.target;
        var prompt = bootbox.prompt("Confermare la data di pagamento", function(result) {
            if (result === null) {
            } else {
                $(currentTarget).find('.data-pagamento').val(result);
                currentTarget.submit();
            }
        });
        $('.bootbox-input').daterangepicker({
            startDate: new Date(),
            format: 'DD/MM/YYYY',
            singleDatePicker: true
        });
    };
    
    $('.form-fattura-saldata').each(function() {
        $(this).on('submit', saldataFatturaChange);
    });
    

    简单地说,事件有一个 event.target,它是被触发事件的目标。这真的很容易实现。

    【讨论】:

      【解决方案2】:

      使用 ajax 发送数据:

      $.ajax({
      url: "script.php",
      type: "POST",
      data: $("#myForm").serialize(),
      success: function(){
          alert('success');
        }
      });
      

      【讨论】:

      • Ajax 在这种情况下根本不是最简单的解决方案。问题不在于发送数据,而在于这种情况下如何迭代
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 2021-12-07
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多