2015-11-17 3 views
0

Моя проблема заключается в том, что после нажатия на кнопку отправки на странице будет идти в PHP файл так, как мой HTML-код, как этоткак показать ошибку в JQuery после нажатия кнопки отправки

<form action="register.php" method="post"> 
    <input type="text" name="name" id="name"><div id="adiv"></div> 
    <input type="submit" value="submit" id="button"> 
</form> 

и мой JQuery код выглядит это

$('#name').focusout(function(){ 
    if($('#name').val().length==0){ 
     $('#adiv').html("please enter name") 
    } 
}); 
$('#button').click(function(){ 
    if($('#name').val().length==0){ 
     $('#adiv').html("please enter your name") 
    } 
}); 

, но после нажатия кнопки он перенаправляет на PHP файл и не показывает какой-либо ошибки и хранить пустые данные в базе данных представить.

+0

Вы можете сделать проверку с Javascript, но вы всегда должны подтвердить ввод на стороне сервера, а также. (С PHP в вашем случае.) Люди могут просто отключить Javascript и по-прежнему отправлять недопустимые данные. – Ivar

+0

Также смотрите [этот пост] (http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work) – mplungjan

ответ

1

Ну, вам нужно остановить выполнение кода после обнаружения ошибки. Например, вы можете просто использовать return false или return:

$('#name').focusout(function() { 
 
    if ($('#name').val().length == 0) { 
 
    $('#adiv').html("please enter name") 
 
    } 
 
}); 
 
$('#button').click(function() { 
 
    if ($('#name').val().length == 0) { 
 
    $('#adiv').html("please enter your name") 
 
    return false;//add this 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form action="register.php" method="post"> 
 
    <input type="text" name="name" id="name"> 
 
    <div id="adiv"></div> 
 
    <input type="submit" value="submit" id="button"> 
 
</form>

1

Потому что ваш input type is submit вы можете change the type to button или добавить event.preventDefault(), чтобы избежать автоматического прохождения формы

использование event.preventDefault()

$('#button').click(function(e) { 
    e.preventDefault();//this will stop form auto submit thus showing your error 
    if ($('#name').val().length == 0) { 
     $('#adiv').html("please enter your name") 
    } 
}); 

Или

<input type="submit" value="submit" id="button"> 

изменение

<input type="button" value="submit" id="button">//also prevent form auto submit thus will show the error 
+0

Пожалуйста, используйте событие отправки вместо события click – mplungjan

+0

@mplungjan im, просто показывающий использование 'e.preventDefault()', поэтому я использовал клик. – guradio

+0

См. Мой ответ для пользователя submit, а не – mplungjan

-1
$('your-form').on('submit', function(e) { 
e.preventDefault(); 
//your code bere 
}); 

preventDefault остановить нормальное поведение представить вашего браузера, так что вы можете запускать любое событие, которое вы хотите

+0

. Затем форма никогда не будет отправлена, если мы не отправим ее еще раз в код, то какая кнопка отправки – mplungjan

+0

Внутри вашего кода вы проверяете наличие там любая ошибка. Если да, вам не нужно отправлять и просто показывать ошибку. Если нет, вы можете отправить запрос ajax или вызвать повторную отправку следующим образом: $ ('your-form'). Submit() ..... Или делать то, что вы хотите – Iecya

0

попробовать это ..: D

function validateFunction(){ 
 
    if(document.getElementByID('name').value.length==0){ 
 
     document.getElementByID('adiv').innerHTML = "please enter your name"; 
 
     return false; 
 
    } 
 
    return true; 
 
}
<input type="submit" value="submit" id="button" onclick="return validateFunction();" />

+0

1: не добавлять встроенные обработчики событий - особенно не если у вас есть jQuery. 2: не присваивать подтверждения кнопке отправки – mplungjan

+0

не будет работать этот код? Могу ли я получить конкретную причину этого проголосовать .. пожалуйста. жаль, что я изменил код на javascript. –

+0

Не выполняйте обработчики событий inline и не используйте обработчик кликов кнопки отправки. Кроме того, НИКОГДА не вызывайте что-либо в a для 'name =" submit ", если вы планируете выполнить отправку позже. Он перезапишет обработчик события формы – mplungjan

0

Я настоятельно рекомендую никогда не назначать проверку нажатию кнопки отправки. Вместо этого назначьте обработчик события отправки формы. Я также добавил обрезку и удалил содержимое ошибки из кода.

$(function() { 
 
    $('#name').focusout(function() { 
 
    var empty = $.trim($('#name').val()).length == 0; 
 
    $('#adiv').toggle(empty); 
 
    }); 
 
    $('#form1').on("submit",function(e) { 
 
    $('#name').focusout(); 
 
    if ($('#adiv').is(":visible")) { 
 
     e.preventDefault() 
 
    } 
 
    }); 
 
});
#adiv { display:none }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<form action="register.php" method="post" id="form1"> 
 
    <input type="text" name="name" id="name"> 
 
    <div id="adiv">please enter name</div><br/> 
 
    <input type="submit" value="submit" id="button"> 
 
</form>

-1

Пожалуйста, проверьте это

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<form method="post"> 
    <input type="text" name="name" id="name"> 
    <div id="adiv"></div> 
    <input type="button" value="submit" id="button"> 
</form> 

<script> 
$(document).ready(function(){ 
$('#button').on('click',function(){ 

if($('#name').val() == ''){ 
$('#adiv').text("Please enter name!!"); 
}else{ 

    $('#adiv').text($('#name').val()); 
} 

}) 

}) 

</script> 
Смежные вопросы