0

フォーム付きの単純な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>";
}

?>
4

3 に答える 3

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'){

}
?>
于 2013-02-02T11:59:59.560 に答える
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の一部として返送され、フォーム入力に表示されます。$_GETAJAX 呼び出しを使用して検証することもできますが、jQuery コードを最小限に抑えたかったので、これはそれを実現できる数少ない方法の 1 つです。

于 2013-02-02T12:06:08.007 に答える
1

js で php を使用することはできません。js 正規表現または jq 検証プラグインを使用します: http://docs.jquery.com/Plugins/Validation

于 2013-02-02T11:54:21.927 に答える