Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Помогите исправить баг с формой ввода (https://javascript.ru/forum/jquery/15720-pomogite-ispravit-bag-s-formojj-vvoda.html)

Bandicoot 10.03.2011 19:08

Помогите исправить баг с формой ввода
 
Это код формы ввода:
<form action="#" method="post" id="indexform">
		<table border="0">
			<tr>
				<td colspan="2">Введите Ваше имя:</td>
				<td>
					<input type="text" size="15" maxlength="20" name="username" id="username"/>
				</td>
				<td>
					<input type="text" class="text" disabled="disabled" name="emptyname" id="emptyname" />
				</td>
			</tr>
			<tr>
				<td colspan="2">Введите пароль:</td>
				<td>
					<input type="password" size="15" maxlength="16" name="password" id="password" />
				</td>
				<td>
					<input type="text" class="text" disabled="disabled" name="emptypass" id="emptypass"/>
				</td>
			</tr>
			<tr>
				<td>Введите код:&nbsp;</td>
				<td>
					<img src="captcha.php" alt="защитный код" id="imgCaptcha" />&nbsp;
					<input type="image" src="img/refresh.jpg" onclick="return refreshCaptcha();" />&nbsp;
				</td>
				<td>
					<input type="text" size="15" maxlength="10" name="securecode" id="secretcode" />
				</td>
				<td>
					<input type="text" class="text" disabled="disabled" name="emptycode" id="emptycode"/>
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<input type="button" value="Регистрация" class='button' onclick="<?php echo $reglink;?>" />
				</td>
				<td>
					<input type="submit" value="Вход" class='button' id="authsubmit" />
				</td>
			</tr>
		</table>
	</form>

А это код JS (используется jquery)
$(document).ready(function(){
$("#indexform").submit(
	function(){
		if($("#username").val() == "") {
			$("#emptyname").val("Введите логин");
		}
		if($("#password").val() == "") {
			$("#emptypass").val("Введите пароль");
		}
		if($("#secretcode").val() == "") {
			$("#emptycode").val("Введите символы с картинки");
		}
	});
})

При попытке отправки формы и наличии при этом пустых полей, должны появляться сообщения об ошибке. Но они появляются только буквально на секунду в момент отправки формы. Как сделать так чтобы сообщения об ошибке не исчезали?

Vulkan 10.03.2011 19:20

Можно так:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#indexform").submit(
	function(){
		if($("#username").val() == "") {
			$("#emptyname").val("Введите логин");
			return false;
		}
		if($("#password").val() == "") {
			$("#emptypass").val("Введите пароль");
			return false;
		}
		if($("#secretcode").val() == "") {
			$("#emptycode").val("Введите символы с картинки");
			return false;
		}
	});
})
</script>

<form action="#" method="post" id="indexform">
		<table border="0">
			<tr>
				<td colspan="2">Введите Ваше имя:</td>
				<td>
					<input type="text" size="15" maxlength="20" name="username" id="username"/>
				</td>
				<td>
					<input type="text" class="text" disabled="disabled" name="emptyname" id="emptyname" />
				</td>
			</tr>
			<tr>
				<td colspan="2">Введите пароль:</td>
				<td>
					<input type="password" size="15" maxlength="16" name="password" id="password" />
				</td>
				<td>
					<input type="text" class="text" disabled="disabled" name="emptypass" id="emptypass"/>
				</td>
			</tr>
			<tr>
				<td>Введите код:&nbsp;</td>
				<td>
					<img src="captcha.php" alt="защитный код" id="imgCaptcha" />&nbsp;
					<input type="image" src="img/refresh.jpg" onclick="return refreshCaptcha();" />&nbsp;
				</td>
				<td>
					<input type="text" size="15" maxlength="10" name="securecode" id="secretcode" />
				</td>
				<td>
					<input type="text" class="text" disabled="disabled" name="emptycode" id="emptycode"/>
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<input type="button" value="Регистрация" class='button' onclick="<?php echo $reglink;?>" />
				</td>
				<td>
					<input type="submit" value="Вход" class='button' id="authsubmit" />
				</td>
			</tr>
		</table>
	</form>

Bandicoot 10.03.2011 19:24

Только что здесь же проверил - работает только для первого поля (логина)

Vulkan 10.03.2011 19:40

Точно, тогда так можно:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
    $("#indexform").submit(

    function () {
        var fields = {
            "#username": ["#emptyname", "Введите логин"],
            "#password": ["#emptypass", "Введите пароль"],
            "#secretcode": ["#emptycode", "Введите символы с картинки"]
        },
            error = false;
        for (i in fields) {
            if ($(i).val() == "") {
                $(fields[i][0]).val(fields[i][1]);
                error = true;
            } else {
                $(fields[i][0]).val('');
            }
        }
        if (error) return false;
    });
})
</script>

<form action="#" method="post" id="indexform">
		<table border="0">
			<tr>
				<td colspan="2">Введите Ваше имя:</td>
				<td>
					<input type="text" size="15" maxlength="20" name="username" id="username"/>
				</td>
				<td>
					<input type="text" class="text" disabled="disabled" name="emptyname" id="emptyname" />
				</td>
			</tr>
			<tr>
				<td colspan="2">Введите пароль:</td>
				<td>
					<input type="password" size="15" maxlength="16" name="password" id="password" />
				</td>
				<td>
					<input type="text" class="text" disabled="disabled" name="emptypass" id="emptypass"/>
				</td>
			</tr>
			<tr>
				<td>Введите код:&nbsp;</td>
				<td>
					<img src="captcha.php" alt="защитный код" id="imgCaptcha" />&nbsp;
					<input type="image" src="img/refresh.jpg" onclick="return refreshCaptcha();" />&nbsp;
				</td>
				<td>
					<input type="text" size="15" maxlength="10" name="securecode" id="secretcode" />
				</td>
				<td>
					<input type="text" class="text" disabled="disabled" name="emptycode" id="emptycode"/>
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<input type="button" value="Регистрация" class='button' onclick="<?php echo $reglink;?>" />
				</td>
				<td>
					<input type="submit" value="Вход" class='button' id="authsubmit" />
				</td>
			</tr>
		</table>
	</form>

Bandicoot 10.03.2011 19:41

Спасибо, сейчас попробую вставить код в свой скрипт


Часовой пояс GMT +3, время: 02:39.