2

PHPCodeigniterフレームワークは初めてです。リンクを使用しているページをデザインしています。リンクをクリックすると、jquery関数を呼び出します。jquery関数は、jqueryを介してフォームを送信します。サーバー側の検証にはcodeigniterフォームの検証方法を使用しましたが、当面はクライアント側の検証を無効にしました。

問題は、このプロセスでフォームがjqueryを介して送信されるときに、codeigniterフォーム検証メソッドが機能しないことです。

しかし、送信ボタンを使用してフォームを送信している場合、codeigniterフォームの検証方法は完全に機能します。

jqueryを介してフォームを送信し、codeigniterフォーム検証メソッドを使用する必要がある場合の対処方法を教えてください。

以下のコードを見つけてください:

ログインフォーム:

<?php echo validation_errors(); ?>
<form name="login-form" id="login-form" method="post" action="<?php echo base_url();?>index.php/login/login_form" >
    <H2>Login</H2>
    <div id="login-box-name">
        Email:
    </div>
    <div id="login-box-field">
        <input name="user-name" id="user-name" class="form-login" title="Please Enter Correct User Name" value="" size="30" maxlength="2048" />
    </div>
    <div id="login-box-name">
        Password:
    </div>
    <div id="login-box-field">
        <input name="password" id="password" type="password" class="form-login" title="Please Enter Correct Password" value="" size="30" maxlength="2048" />
    </div>
    <br />
    <span class="login-box-options">
        <input type="checkbox" name="1" value="1" title="Want this computer to remember you!!"> Remember Me <a href="#" id="login-div-change">Forgot password?</a>
    </span>
    <br />
    <br />
    <a href="" id="login-submit">
        <img src="<?php echo base_url();?>assets/images/login-btn.png" width="110" height="40" style="margin-left:90px;" />
    </a>
    <input type="submit" name="submit" id="submit" value="Submit" />
</form>

「リンク」をクリックしてフォームを送信するjquery関数:

    $( "#login-submit")。click(function()
    {{
    $('#login-form')。submit();
    falseを返します。
    });

コントローラ機能:

    パブリック関数login_form()
    {{

        $ this-> load-> helper(array('form'、'url'));
        $ this-> load-> library('form_validation');
        $ data ['title']='ログイン';

        $ data ['errorMessage'] ='';
        $ this-> form_validation-> set_rules('user-name'、'Email'、'required');
        $ this-> form_validation-> set_rules('password'、'Password'、'required');

        if($ this-> form_validation-> run()== FALSE)
        {{
        $ this-> load-> view('templates / header'、$ data);
        $ this-> load-> view('login'、$ data);
        $ this-> load-> view('templates / footer');
        }

        そうしないと
        {{
        $ this-> load-> view('templates / header'、$ data);
        $ this-> load-> view('templates / menu');
        $ this-> load-> view('index'、$ data);
        $ this-> load-> view('templates / footer');
        }

    }

ここで、[フォームの[送信]ボタンをクリックすると、codeigniterの検証がユーザー名とパスワードのフィールドで機能します。ただし、id = "login-submit"のリンクをクリックすると、jquery関数とフォームが呼び出されます。ただし、今回は、codeigniterの検証はユーザー名とパスワードのフィールドでは機能しません。

リンクを介してフォームを送信する必要があります。これには、codeigniter検証機能が機能するはずです。

前もって感謝します.....

4

3 に答える 3

3

.preventDefault()アンカークリックイベントでfalseを返す代わりに使用します。

.submit()これは以前に私に起こったことであり、クリックイベント内を使用してfalseを返し、アンカーのデフォルトの動作を停止する競合がどこかにあるように思われます。

于 2012-04-06T07:16:03.880 に答える
2

上記のコードは正常に機能しています。実際、私は自分のコードでばかげた間違いをしました。jQueryに次のコードを使用しましたが、現在は機能しています。

    $( "#login-submit")。click(function(e){
        e.preventDefault();
        $('#login-form')。submit();
    });

ありがとう

于 2012-04-06T07:23:12.417 に答える
0

これは、ボタンをクリックすると常に関数を呼び出すために発生します。あなたはそれを止める必要があります。

$("#login-submit").click(function(e){
 e.preventDefault();
 $('#login-form').submit();
});
于 2020-10-27T07:28:04.110 に答える