EDIT:document.getElementById('submit').disabled='disabled';
делает трюк, если я поставлю его вместо return false;
, но по некоторым причинам, он также блокирует кнопку, когда имя пользователя не принимается.PHP отправки формы и проверки AJAX
Ниже приведен базовый сценарий для проверки доступности имени пользователя.
Как я могу предотвратить отправку формы, если имя пользователя уже занято?
В идеале я хотел бы, чтобы окно предупреждения JS всплывало.
Я попытался добавить это в JS, но не получилось:
document.getElementById('submit').disabled
Также я пытался добавить onclick="return validate();"
к самой форме, но не повезло либо: форма до сих пор все еще могут быть представлены.
HTML
<form id="edit" action="edit.php" method="post">
<fieldset>
<label>Username</label><input type="text" class="input" name="username"
id="username"/><span id="status"></span>
<button type="submit" id="submit" value="add">Save</button>
</fielset>
</form>
Script
<script type="text/javascript">
$(document).ready(function() {
$("#username").change(function() {
var username = $("#username").val();
var msgbox = $("#status");
if (username.length >= 4) {
$("#status").html('<img src="images/gif/ajax-loading.gif">');
$.ajax({
type: "POST",
url: "ajax_check.php",
data: "username=" + username,
success: function(msg) {
if (msg == 'OK') {
msgbox.html('<img src="/images/yes.png">');
return true;
} else {
msgbox.html(msg);
return false;
}
}
});
} else {
$("#status").html('<img src="/images/no.png">too long!');
return false;
}
return false;
});
});
edit.php
ajax_check.php
и содержат только некоторые запросы SQL.
Кроме того, некоторые пользователи отключили JavaScript в своем браузере, как я мог обойти это?
Я думаю, что 'onclick =" return validate(); "' должен делать трюк. Где вы это разместили? он должен быть в элементе кнопки. Невозможно принудительно выполнить JS-исполнение, на самом деле к странице можно получить доступ с помощью некоторых утилит загрузки (например, wget), которые не имеют представления о том, что такое JS. :) –
@AntoanMilkov Я только что сделал, как вы сказали, и все же кнопка отправки по-прежнему доступна для кликов, поэтому форма отправляется. Мне действительно нужно убедиться, что ни у одного клиента не может быть того же самого. –
Должно ли это быть на форме 'onsubmit' event? Подобно '