我正试图阻止锚点标签提交到页面上的联系表单中。我尝试使用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做到这一点。关于此的任何信息都是有帮助的。谢谢。