jQuery.steps и удаленная проверка
Я использую плагин jQuery.steps и у меня теперь есть некоторые проблемы, касающиеся проверки, у меня есть поле "имя пользователя", которое необходимо проверить (если имя пользователя уже существует), прежде чем перейти к следующему шагу, позвольте мне показать вам некоторый код:
removed
PHP-код выглядит так
removed
проблема, с которой я столкнулся, заключается в том, что когда я нажимаю следующую кнопку, форма просто продолжается, даже если имя пользователя уже занято... если я нажимаю на кнопку назад и имя пользователя уже занято, отображается сообщение об ошибке, и я не могу продолжить перед выбором доступного имени пользователя.
Когда я, например, ввожу 7 символов в поле имени пользователя и нажимаю "Далее", форма не продолжается, после удаления 7 символов и ввода имени пользователя, которое уже занято, форма также не продолжается.
Я надеюсь, что вы, ребята, поняли мою проблему и нашли для меня отличное решение (как всегда):-)
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Ура!
ОБНОВЛЕНИЕ Поскольку моя проблема была не совсем ясна, я создал небольшой онлайн-пример, который должен отражать мою проблему, вы можете найти его здесь: http://example.crasher.ch/
Там источники, используемые на этой странице выглядит так
index.php
<form id="test" name="test" action="#" style="width: 650px">
<h3>Personelles</h3>
<div>
<p>
Lorem ipsum dolor sit amet.
</p>
<label for="name">Name</label><input type="text" id="bva_name" name="bva_name" value="Name">
<br /><br class="clear" />
<label for="vorname">Firstname</label><input type="text" id="vorname" name="vorname" value="Firstname">
<br /><br class="clear" />
<label for="username">Username</label><input type="text" id="username" name="username" value="abcdef">
<br /><br class="clear" />
</div>
<h3>Arbeitsplatz</h3>
<div class="arbeitsplatz">
<p>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr.
</p>
<label for="something">Something</label>
<input type="text" name="something" id="something" />
<br /><br class="clear" />
</div>
<h3>Abschluss</h3>
<div>
<p>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr.
</p>
<label for="otherlogins">Sonstige Logins</label>
<textarea name="otherlogins" id="otherlogins"></textarea>
<br /><br class="clear" />
</div>
</form>
<!-- JQUERY FUNCTIONS -->
<script>
$(function()
{
// initialize wizzard form
var form = $("#test").show();
form.steps({
headerTag: "h3",
bodyTag: "div",
transitionEffect: "slideLeft",
onStepChanging: function (event, currentIndex, newIndex)
{
// Allways allow previous action even if the current form is not valid!
if (currentIndex > newIndex)
{
return true;
}
// Needed in some cases if the user went back (clean up)
if (currentIndex < newIndex)
{
// To remove error styles
form.find(".body:eq(" + newIndex + ") label.error").remove();
form.find(".body:eq(" + newIndex + ") .error").removeClass("error");
}
form.validate().settings.ignore = ":disabled,:hidden";
return form.valid();
},
onFinishing: function (event, currentIndex)
{
form.validate().settings.ignore = ":disabled,:hidden";
return form.valid();
},
onFinished: function (event, currentIndex)
{
alert('you did it');
},
labels:
{
cancel: "Abbrechen",
current: "Aktueller Schritt:",
pagination: "Pagination",
finish: "Finish",
next: "Next",
previous: "Back",
loading: "Lade..."
}
})
.validate({
rules: {
name: {
required: true,
minlength: 2
},
vorname: {
required: true,
minlength: 2
},
username: {
required: true,
minlength: 6,
maxlength: 6,
remote: {
url: "ajax.php",
type: "POST",
data: {
action: function() {
return "validateUsername";
},
username: function() {
return $("#username").val();
}
}
}
}
}
});
});
</script>
<!-- /JQUERY FUNCTIONS -->
ajax.php
<?php
$username = $_POST['username'];
if ( $username == "abcdef" || $username == "qwertz" )
{
echo json_encode("Der Benutzername ist bereits vergeben");
}
else
{
echo "true";
}
?>
Как вы можете видеть, если вы просто нажмете кнопку "Далее", проверка не будет работать, даже если предварительно заполненное имя пользователя не разрешено, когда вы нажимаете кнопку "Назад", вы видите сообщение об ошибке и не можете продолжить, пока не будет введено другое имя пользователя. Кроме того, если вы измените какое-либо поле (например, оставьте имя пустым), нажмите "Далее", имя пользователя также будет проверено правильно, так как имя вызвало проверку - надеюсь, теперь моя проблема понятна всем:)