0

hi i am trying to dynamically validate my registration form, so that check are being made, when the user enters values into input fields using jquery and php. any help would be most appreciated.

html

   <DOCTYPE html>

<html lang="en">

<head>
     <meta charset="utf-8">
     <title>jQuery Tutorial</title>
</head>

<body>
<form>
<input type="text" id="fname" size ="25" placeholder="firstname" />
<span id="fname_feedback"></span></br></br>
<input type="text" id="lname" size ="25" placeholder="firstname" />
<span id="lname_feedback"></span></br></br>
<input type="submit" id="reg" value="sign up">
</form>

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/reg.js"></script>
</body>

</html>

jquery

function validate(fname, lname){
$.post('php/registration.php', {fname: fname, lname: lname}, function(data){

        $('#fname_feedback').text(data.fname);
        $('#lname_feedback').text(data.lname);
;
    },'json');
}

$('#fname').focusin(function(){ 
  if($('#fname').val() ==='') {
$('#fname_feedback').text('requried field');
} else {

validate($('#fname').val());

}
}).blur(function() { 

$('#fname_feedback').text('');

validate($('#fname').val());

}).keyup(function(){

validate($('#fname').val());

});

$('#lname').focusin(function(){ 
  if($('#lname').val() ==='') {
$('#lname_feedback').text('requried field');
} else {

validate($('#lname').val());

}
}).blur(function() { 

$('#lname_feedback').text('');

validate($('#lname').val());

}).keyup(function(){

validate($('#lname').val());

});

php

<?php

require '../init.php';
$fname_error= '';
$lname_error='';

if(isset($_POST['fname']))
{
    $fname = $_POST['fname'];

     //updated if statement
     if (strlen($fname) < 5)
    {
        $fname_error = 'example error message';
    } else {

         $fname_error = 'example';
    } 
}

if(isset($_POST['lname']))
{
    $lname = $_POST['lname'];

     //updated if statement
     if (strlen($lname) < 5)
    {
        $lname_error = 'example error message';
    } else {

         $lname_error = 'example';
    } 
}


$return_data=array('fname'=> $fname_error, 'lname'=>$lname_error);

header('Content-Type: application/json');
echo json_encode($return_data);
exit();
?>
0

1 Answer 1

3

You need to use parseJSON function of jquery to use return data, so line will be something like this in validate function

var obj = jQuery.parseJSON(data);
$('#fname_feedback').text(obj.fname);

I controller you need to add like this

<?php

require '../init.php';
$fname_error= '';

if(isset($_POST['fname']))
{
    $fname = $_POST['fname'];

     //updated if statement
     if (strlen($fname) < 5)
    {
        $fname_error = 'example error message';
    }
}

$return_data=array('fname'=> $fname_error);

header('Content-Type: application/json');
echo json_encode($return_data);
exit();
?>
Sign up to request clarification or add additional context in comments.

7 Comments

i think the error is to do with where i have declared my fname_error variable
you need to add this line below the If condition $return_data=array('fname'=> $fname_error);
Thanks but if I had a lot more if statements and I kept pasting it under the if statement wouldn't I just be duplicating code
@percy3872 i modified my answer you can check now controller code in this
thanks this passes the data back however when i do an else statement for the fname_ error it does not overide what is currently stored in the fname_error variable
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.