如何在Javascript中重置preventDefault?

时间:2019-05-16 13:15:51

标签: javascript jquery

在我的Drupal 7网站上,我有一些签出页面,在这些页面上,我需要检查提交表单后字段值是否更改。如果未更改,我想显示一条消息以提醒客户填写该字段。在某些情况下,该字段可能会保留为空或保持不变,因此我也需要考虑到这一点。

这是我到目前为止得到的:

  function extracheck(){
    var checkfield = document.querySelector("#edit-continue") !== null;
      if (checkfield){
      document.getElementById("edit-continue").addEventListener("click", function(event) {
        var alertfield = document.getElementById('edit-customer-profile-kompl-info-field-ert-ordernummer-und-0-value');
        if (alertfield.value == alertfield.defaultValue) {
            event.preventDefault();
            $('#edit-customer-profile-kompl-info-field-ert-ordernummer-und-0-value').css("background-color", "#FFFF33");
            $('#output-box').addClass('output-box-style');
             document.getElementById("output-box").innerHTML = "The highlighted field is empty. Do you really want to continue?<br><br><div class='button tiny' id='btn1'>YES, continue</div><div class='button tiny' id='btn2'>NO, I want to edit the field</div>";
             btn1.addEventListener("click", yesfunction, false);
             btn2.addEventListener("click", nofunction, false);
             return false;
        }
      }, false);
    }
  }

  extracheck();

  function yesfunction(){
    document.getElementById('commerce-checkout-form-checkout').submit();
  }
  function nofunction(){
      $('#output-box').css("display","none");
      // here I need to "undo" the preventDefault set above
  }

首先,我需要检查页面上是否存在此特定的提交按钮(ID为#edit-continue)。 然后,使用valuedefaultValue将字段值的初始状态与当前状态进行比较。如果该字段未更改,我将preventDefault操作绑定到Submit按钮,因此不提交表单。然后,我突出显示该字段,并显示一个DIV框,并询问“突出显示的字段为空。您真的要继续吗?”和2个按钮:“是,我要继续”和“否,我要编辑该字段”。

然后我将2个事件侦听器绑定到按钮,并将它们分配给外部功能nofunction()yesfunction()。如果客户单击“是”,则提交表单。如果他单击否,我将隐藏消息框。我本可以重新加载页面,但是所有其他字段中填写的所有值都将被清除。

因此,我只需要隐藏该框,然后撤消或重置“提交”按钮上的preventDefault动作,即可以正常方式提交表单。

我正在head头,并尽了所有我能想到的。有人在隐藏消息框后如何让我正常提交表单有想法吗?我试图使用removeEventListener并使用在Submit button元素上返回true的函数。

否则一切正常,如果该字段未更改,则打开框,如果更改该字段,则正常提交表单。如果该字段保持不变,并且用户决定继续所有操作并单击“是”,则还将提交表单。

0 个答案:

没有答案