#javascript
#javascript
Вопрос:
Я использовал javascript, чтобы добавить это при загрузке определенной страницы.
document.getElementById('commit').addEventListener("click", validateSubmit,
false);
у этого метода validateSubmit есть некоторый код, который будет проверять данные формы, и
он сделает это
function validateSubmit(){
//some code
window.addEventListener('submit', newsubmit, true);
HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
HTMLFormElement.prototype.submit = newsubmit;
}
function newsubmit(event) {
var target = event ? event.target : this;
event.preventDefault();
return false;
}
итак, в первый раз при отправке формы, нажав на ее появление в этом методе, и это предотвращает отправку значений формы, и после исправления всех этих значений, когда я снова пытаюсь нажать кнопку отправки, тогда она не работает, в консоли я получаю эту ошибку-
"Uncaught TypeError: Cannot call method 'preventDefault' of undefined"
Пожалуйста, помогите мне…
Заранее спасибо..
Ответ №1:
Попробуйте изменить объявление вашей функции с
function newsubmit(event) {
Для
var newsubmit = function(event) {
функция должна быть объявлена как переменная, если вы хотите использовать ее в качестве параметра прослушивателя событий.
Ответ №2:
Я не думаю, что вам нужно проходить через такие трудности, чтобы пользователь не отправлял неполную форму. Попробуйте это:
<form name="form1" id="form1" onsubmit="return validateForm()" ....>
<input type="text" id="txtName" />
</form>
function validateForm()
{
//CHECK IF FORM FIELDS CONTAIN VALID VALUES?
var formValid=....;//validation logic
return formValid;
}
Теперь, если во время проверки вы обнаружите какую-либо ошибку, вы установите formValid
переменную в false
противном случае, если все входные данные верны, установите formValid
значение true. When form will get
false as return value from
validateForm`, функция validateForm не будет отправлена.
Комментарии:
1. Спасибо, что ответили так быстро, но моя проблема в том, что я не добавил этот код в саму HTML-страницу. Я создал расширение для Google Chrome, которое сначала проверяет наличие определенного URL-адреса, и если этот URL-адрес найден, то при попытке пользователя нажать кнопку отправки появляется приведенный ниже код, а затем он вызовет функцию validatesubmit и для того, чтобы не отправлять уже заполненные значения «document.getElementById(‘commit’).addEventListener(«click», validateSubmit,false);» Я не могу изменить код HTML-страницы. Поскольку это не мой сайт:(
Ответ №3:
Попробуйте это:
function validateSubmit(){
window.addEventListener('submit', newsubmit, true);
HTMLFormElement.prototype.submit = newsubmit;
HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
}
function newsubmit(event) {
var target = event ? event.target : this;
event.preventDefault();
return false;
}