通过ajax提交表单时启用浏览器自动完成功能

问题描述 投票:0回答:1

搜索了一段时间后,我找不到解决我问题的好方法。

我有一个使用模式窗口(例如,启动箱)显示的表单。该表单是使用ajax发布提交的,但是浏览器无法存储输入值(自动完成),因此当再次显示此表单时,它可以显示这些值。

function openModal(view) {
  var buttons = {};

  buttons.success = {
    label: "Salvar",
    className: "btn-primary",
    callback: function() {
      var $form = box.find("form");
      var valuesToSubmit = $form.serialize();
      $.ajax({
        type: "POST",
        url: $form.attr('action'),
        data: valuesToSubmit,
        dataType: "json"
      }).success(function(response) {
        box.modal('hide');
        if (successCallback) {
          successCallback();
        }
      }).error(function(response) {
        box.find(".modal-body").html(response.responseText);
        enableBasicControls(box);
        if (errorCallback) {
          errorCallback();
        }
      });

      return false;

    }
  };

  buttons.danger = {
    label: "Cancelar",
    className: "btn-danger"
  };

  box = bootbox.dialog({
    title: title,
    animate: false,
    message: view,
    onEscape: function() {},
    buttons: buttons,
    size: "large"
  });
}
<form asp-action="Create">
    <input asp-for="Id" type="hidden" />
    <input asp-for="ConsultaId" type="hidden" />

    <div class="row">
        <input data-focus="true" data-select="true" class="form-control" type="number" data-val="true" data-val-required="The QtdEmbalagens field is required." id="QtdEmbalagens" name="QtdEmbalagens" value="1">
        
    </div>
    <div class="row">
        <input rows="4" class="form-control" type="text" id="Observacao" name="Observacao" value="">
    </div>
</form>
javascript jquery ajax
1个回答
0
投票

我解决了使用iframe提交到伪造页面的问题:

<iframe name="myframe" id="frame1" src="Create" style="display: none;"></iframe>

<form asp-action="Create" target="myframe">
    <input asp-for="Id" type="hidden" />
....


function openModal(view) {
    var buttons = {};
    buttons.success = {
        label: "Salvar",
        className: "btn-primary",
        callback: function () {
            var $form = box.find("form");
            var  url = $form.attr('action');
            $form.attr('action', "about:blank");
            $form.submit();//======================== fake

            var valuesToSubmit = $form.serialize();
            $.ajax({
                type: "POST",
                url: url, //sumbits it to the given url of the form
                data: valuesToSubmit,
                dataType: "json"
            ...
© www.soinside.com 2019 - 2024. All rights reserved.