#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>