Функция Javascript onsubmit () ничего не делает

#javascript #php

#javascript #php

Вопрос:

У меня проблема с функциями Javascript. Моя функция не будет работать, я вызвал ее в форме с помощью вызова onsubmit (), но ничего не происходит.

 $(document).ready(function(){
	window.provera = function(){
		nizError = new Array();

		var ime = $("#imeReg").val();
 		var reIme = /^[A-Z][a-z]{2,9}$/;

 		var prezime = $("#prezimeReg").val();
 		var rePrezime = /^[A-Z][a-z]{2,14}(s[A-Z][a-z]{2,14})*$/;

 		var username = $("#usernameReg").val();
 		var reUsername = /^([A-Za-z] [0-9]|[0-9] [A-Za-z])[A-Za-z0-9]*$/;

 		var email = $("#emailReg").val();
		var reEmail =/^[w] [._w]*@[w] ([.][w] ) $/;

 		var password = $("#passwordReg").val();
 		var rePassword = /^[S]{5,50}$/;

		if(!reIme.test(ime)){
			nizError.push('Pogresno ste uneli ime');
		}else if(ime = ""){
			nizError.push('Ime je obavezno da se unese');
		}

		if(!rePrezime.test(prezime)){
			nizError.push('Pogresno ste uneli prezime');
		}else if(prezime = ""){
			nizError.push('Prezime je obavezno da se unese');
		}

		if(!reUsername.test(username)){
			nizError.push('Pogresno ste uneli username');
		}else if(username = ""){
			nizError.push('Username je obavezno da se unese');
		}

		if(!reEmail.test(email)){
			nizError.push('email');
		}else if(email = ""){
			nizError.push('Email je obavezno da se unese');
		}

		if(!rePassword.test(password)){
			nizError.push('password');
		}else if(password = ""){
			nizError.push('Password je obavezno da se unese');
		}

		var ispis = "";

		if(nizError.length > 0){
			for(var i = 0; i < nizError.length; i  ){
				ispis = "<p>"  nizError[i]  "</p>";
			}
			$("#result").html(ispis);
			return false;
		}
		return true;
	}
});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="tableLogin">
			<form action="#" method="post" onsubmit="provera()">
				<tr>
					<td>
						<label>Ime</label>
					</td>
					<td>
						<input type="text" id="imeReg" name="imeReg" class="typeText"/>
					</td>
				</tr>
				<tr>
					<td>
						<label>Prezime</label>
					</td>
					<td>
						<input type="text" id="prezimeReg" name="prezimeReg" class="typeText"/>
					</td>
				</tr>
				<tr>
					<td>
						<label>Username</label>
					</td>
					<td>
						<input type="text" id="usernameReg" name="usernameReg" class="typeText"/>
					</td>
				</tr>
				<tr>
					<td>
						<label>E-mail</label>
					</td>
					<td>
						<input type="text" id="emailReg" name="emailReg" class="typeText"/>
					</td>
				</tr>
				<tr>
					<td>
						<label>Password</label>
					</td>
					<td>
						<input type="password" id="passwordReg" name="passwordReg" class="typeText"/>
					</td>
				</tr>
				<tr>
					<td colspan="2">
						<input type="submit" value="Registruj se" id="btnSubReg" name="btnSubReg" class="buttonSub"/>
					</td>
				</tr>
			</form>
		</table>  

Когда я оставляю атрибут # on action, ничего не происходит, но когда я пытаюсь поместить какую-либо страницу, например admin.php он переходит на эту страницу, и снова я не могу подтвердить свою форму.

Я работаю над веб-сайтом для своих исследований, и мне нужно проверить форму на стороне клиента, чтобы, если все в порядке, она перешла на сторону сервера, где я могу снова проверить ее с помощью php и отправить в базу данных.

Комментарии:

1. Добавьте свою page.php ссылку для вашего атрибута action. Когда вызывается ваш обработчик событий ( provera ) для onsubmit , вызывайте event.preventDefault , если проверка на стороне клиента завершается неудачей. preventDefault предотвратит навигацию по отправке / странице.

2. bob something@example.com это действительный адрес электронной почты, но эта форма предотвращает его использование.

3. Попробуйте связать с $('form').submit(function() { ... }) и включите туда свою функцию, чтобы убедиться, что она выполняется при отправке. Это более лаконичный способ связать ее, чем этот метод вставлять ее в window first. Вероятно, вы используете функцию до того, как она была определена в вашем подходе.

4. Также принято просто говорить nizError = [ ] вместо явного и гораздо более подробного new Array() .

5. Спасибо за советы @tadman, но это больше не сработает

Ответ №1:

Вместо этого:

    <input type="submit" value="Registruj se" 
     id="btnSubReg" name="btnSubReg" 
     class="buttonSub"/>
  

Используйте это:

     <input type="button" value="Registruj se" 
   id="btnSubReg" onclick="provera()" name="btnSubReg" 
    class="buttonSub"/>
  

И в вашем javascript добавьте в конце, если все допустимо, это:

   document.getElementById("myForm").submit();
  

И добавьте в «действие» путь к вашему файлу php.

Комментарии:

1. Я сделал все, как вы сказали, и снова ничего. Она должна показать мне текстовую ошибку от nizGreske, потому что я оставляю все в форме пустым, но ничего не происходит

2. Этот код использует jQuery, поэтому $('#myform').submit() должно быть достаточно.

3. Вы должны присвоить своей форме идентификатор, например id=»register»

Ответ №2:

Вы не вызываете функцию onSubmit()
<td colspan="2">
<input type="submit" value="Registruj se" id="btnSubReg" name="btnSubReg" class="buttonSub" onsubmit="return upload(this)"/>
</td>