#php #javascript #jquery #html #ajax
#php #javascript #jquery #HTML #ajax
Вопрос:
Я проверил доступность имени пользователя. Проблема в том, что даже если имя пользователя недоступно, форма публикуется.
Отредактированный код:
<SCRIPT type="text/javascript">
$(document).ready(function(){
$("#emailch").change(function() {
var usr = $("#emailch").val();
if(usr.length >= 3)
{
$("#status").html('<img src="images/loader.gif" align="absmiddle">amp;nbsp;Checking availability...');
$.ajax({
type: "POST",
url: "includes/check.php",
data: "username=" usr,
success: function(msg){
$("#status").ajaxComplete(function(event, request, settings){
if(msg == 'OK')
{
$("#username").removeClass('object_error'); // if necessary
$("#username").addClass("object_ok");
$(this).html('amp;nbsp;<img src="images/tick.gif" align="absmiddle">');
}
else
{
$("#username").removeClass('object_ok'); // if necessary
$("#username").addClass("object_error");
$(this).html(msg);
}
});
}
});
}
else
{
$("#status").html('<font color="red">The username should have at least <strong>3</strong> characters.</font>');
$("#username").removeClass('object_ok'); // if necessary
$("#username").addClass("object_error");
}
});
});
</SCRIPT>
Чего я хочу, так это того, что форма не должна публиковаться, если имя пользователя недоступно. Я пытался использовать return false;
в УСЛОВИИ IF, но это не удается. Пожалуйста, предложите любой альтернативный метод. Мы будем признательны за любую помощь.
Комментарии:
1. Откуда вы вызываете этот код? Покажите нам контекст этого.
return false;
будет работать, вам просто нужно поместить его в нужное место.2. Где вызывается эта функция? Внутри обработчика onsubmit?
3. @Ян Ханчич, Салман , Код отредактирован. Пожалуйста, проверьте!
Ответ №1:
при отправке возвращает false независимо ни от чего, если поле исправно, отправляйте форму на ajax, если она плохая, с ошибкой или что вам нужно
<form action="http://www.google.com" id="formId" method="post">
<input type="text" id="emailch" name="emailch" />
<input type="submit" />
</form>
<script type="text/javascript">
$(document).ready(function(){
$("#formId").submit( function() {
if( $("#emailch").val().length >= 3){
alert( 'the form is going to post via ajax here' );
}else{
alert( 'user name invalid error out or whatever you need to do.' );
}
return false;
});
});
</script>
Ответ №2:
Использование return false для остановки отправки формы на самом деле не очень хорошо работает в jQuery. Вместо этого используйте event.preventDefault(), попробуйте что-то вроде этого:
$(function() {
$('#formid').submit(function(event) {
if ($("#emailch").val().length < 3) {
event.preventDefault();
}
});
});
Комментарии:
1.
return false;
работает просто отлично, с какими проблемами вы сталкиваетесь при этом?2. О, похоже, вы правы. Я отчетливо помню, как тестировал это некоторое время назад, и я не думаю, что тогда это сработало (но event.preventDefault() сработал). Должно быть, что-то перепутал.
Ответ №3:
Установите флаг (переменную) в вашей success
функции на false
(например), если имя пользователя недоступно. Затем установите этот флаг в onsubmit
обработчике вашей формы, и если флаг равен false, верните false из этого обработчика событий, и ваша форма не будет отправлена.