无法停止联系表7插件上带有锚标签的表单提交

时间:2018-07-31 14:29:31

标签: javascript php wordpress validation contact-form-7

我正试图阻止锚点标签提交到页面上的联系表单中。我尝试使用javascript阻止此操作,并从Stack Overflow中获取了一些提示:

(function() {

    'use strict';

    // get elements of the form

    // textarea input, where the '<a' strings are coming in
    var input = document.querySelector('.wpcf7-textarea');
    var submit    = document.querySelector('.wpcf7-submit');
    var form      = document.querySelector('.wpcf7-form');

    // The actual contact-form-7 button is hidden since it 
    // seems to fire regardless of having an event.preventDefault()
    // on it, so a new button is created to replace it.
    function createButton() {

      var button = document.createElement('button');
      button.setAttribute('type', 'button');
      button.classList.add('form-button');
      // hide the original button
      submit.style.display = 'none';
      button.innerHTML = 'Send';
      // add new button to the form
      form.appendChild(button);

      // give the new button a click event that triggers
      // function hasLink()
      button.addEventListener('click', function(event) {
        hasLink(event);
      });
    }

    // check the message input for '<a' string
    function hasLink(event) {
        event.preventDefault();
        var value = input.value;
        // test the textarea input for '<a' string
        var result    = /<a/.test(value);
        if (result == true) {
            alert('Do not add links to the message.');
        }
        else {
        // submit to form if doesn't contain string
        document.createElement('form').submit.call(form);
        }
    }

    // create the new button on page load
    createButton();

})();

这在用户键入表单时有效,但是由于某些原因,我仍然收到带有锚标记的垃圾邮件。

是因为垃圾邮件发送者的网页缓存版本没有新的javascript吗?也许他们禁用了JavaScript?还是他们能够以某种方式以编程方式提交此表单?我唯一的解决方案是在PHP服务器端进行验证吗?我被吓倒了,要用PHP做到这一点。关于此的任何信息都是有帮助的。谢谢。

0 个答案:

没有答案