2013-02-02 59 views
0

我有一个简单的HTML格式的文件。使用jquery验证HTML表单吗?

<form action="register.php" method="get" id="submitform"> 
    First Name: 
      <input type="text" class="fb-input" name="fname" id="firstname" /> 
      <br> 
    <div class="fb-error"> 
    </div> 

    <input type="button" name="signupBtn" id ="sub" value="Sign upw"> 

</form> 

当我按下提交按钮,这将在jquery中检查,如果该字段为空。

$(document).ready(function(){ 
    $("#sub").click(function(){ 
     register(); 
    }); 
}); 

function register(){ 
    var firstname=$("#firstname").val(); 

    if(firstname==""){ 
     $(".fb-error").show().html("You must fill the fields."); 

    }else{ 
     $(".fb-error").hide(); 
     $("#submitform").submit(); 
    } 
} 

然后被检查后,它将被提交到PHP文件进一步检查的形式输入的字符,然后如果无效字符会发现它会响应。

我想要的是,我在php文件中提交页面后所做的检查将在jquery中传输。例如:

function register(){ 
    var firstname=$("#firstname").val(); 

    if(...){ 
     <?php 
      if(preg_match(....)){....} 
     ?> 
    }else{ 
     ..... 
    } 
} 

我试过了,它没有工作。我想我不能把PHP里面的jQuery。我想把php放在jquery中的原因是我能够在HTML的div部分显示一条错误消息,因为一旦我提交了页面,就会跳转到另一个空白页面,其中php错误消息显示向上。

即时通讯的作用就像Facebook的注册表一旦您提交并输入错误的字符,错误信息将显示在底部。我们需要使用php,jquery只是可选的。

任何人都可以帮助我吗?或者可以建议一个更好的方法来做到这一点?


更新时间:

HTML代码:

<html> 
<head> 
<title>Facebook Registration</title> 
</head> 
<body> 
<form action="register.php" method="get" id="submitform"> 
    First Name: 

    <?php $fname = isset($_POST['fname']) ? $_POST['fname'] : ''; ?> 

    <input type="text" class="fb-input" name="fname" value="<?php echo $fname;  ?>"> 
     <br> 

    <div class="fb-error"> 
    </div> 

    <input type="submit" name="signupBtn" id ="sub" value="Sign upw"> 

</form> 

php文件:

<?php 
$fname=$_GET['fname']; 

if((preg_match("/^[a-zA-z]{1,}$/",$fname))){ 
    echo "registered"; 
} 
else{ 
    var_dump($_POST); 
    echo "<form id='retForm' method='post' action='index.php'>"; 
    echo "<input type='hidden' name='fname' value='$_POST[fname]'>"; 
    echo "<script>$(document).ready(function() { $('#retForm').submit() });</script>"; 
} 

?> 
+0

当您的PHP脚本在提交中检测到任何错误时,您可以重定向用户以再次填写表单。您可以简单地以该形式回显相关的错误消息。 – Antony

+0

你也可以在javascript中使用正则表达式。 – Rembunator

+0

@Antony是可能的,当我重定向输入值的形式仍然会保持? – Katherine

回答

1

你可以在PHP中做什么,很简单。您可以在另一页上的PHP脚本中验证表单,如果发现任何错误,则可以使用$ _POST变量将表单重新定向。

像这样的事情在窗体上现在

<?php $fname = isset($_GET['fname']) ? $_GET['fname'] : ''; ?> 
<input type="text" class="fb-input" name="fname" value="<?php echo $fname; ?>"> 

,在您的register.php,你可以写这个片段

<?php 
    if(isset($_GET['signupBtn'])) { 
     //do validation on $_GET['fname'] 
     //if the validation fails, send it back to the form with the value like this 
     echo "<form id='retForm' method='GET' action='originalForm.php'>"; 
     echo "<input type='hidden' name='fname' value='$_GET[fname]'>"; 
     echo "<script>$(document).ready(function() { $('#retForm').submit() });</script>"; 
    } 
    else { 
     //proceed with registration 
    } 
?> 

这将fname发回的$_GET变量的一部分,将显示在表单输入中。你也可以使用AJAX调用进行验证,但是由于你想尽量减少jQuery代码,这将是你实现它的几种方法之一。

+0

谢谢。在重定向时,我使用header()函数。这是对的吗?如果我回复表单,它是否与原始表单匹配?因为当我重定向时,值不被传递。 – Katherine

+0

你不能使用'header()'重定向回来,因为它不会发送任何数据。这是因为'header()'必须位于页面的顶部,因此不会进行处理。我在答案中写了jQuery中的重定向脚本,所以你可以使用它。 – Achrome

+0

oic。但有一个错误。它表示未定义的索引(然后是表单中输入的值)。它指向代码段中第二个回显的行。我将fname更改为$ fname,但没有解决问题。 – Katherine

2

您需要创建一个PHP文件,并写入您的验证,那么,您需要使用AJAX调用这个页面,然后把需要的参数

$.get("validation.php", { fieldname: "firstname", value: $("#firstname").val(); }, 
    function(data){ 
    if(data){ 
    } 
    else{ 
    } 
    }); 

验证.php

<?php 
$fieldname = $_GET['fieldname']; 
$fieldvalue = $_POST['value']; 

if($fieldname == 'firstname'){ 
if(!preg_match('/^[a-zA-Z0-9]+$/', $fieldvalue)){ 
    echo 'Notvalid'; 
} 
} 
if($fieldname == 'email'){ 

} 
?>