2

ajax onClickで送信したい(codeigniterで作成した)フォームがあります。フォームが Ajax なしで送信され、実行できませんevent.preventDefault();

jQueryファイル

$('#register_submit').click(function(e){//
   e.preventDefault();
    var first_name = $('#register_form1').val();


    $.ajax({
        type: "POST", 
        async: false, 
        url: base_url+"register/registration_val",   
        data: "register_first_name="+first_name,
        success: function(data){
            $('#inferiz').html(data);
        },
        error: function(){alert('error');}
    }); 

});

// コントローラは問題なく動作します。name register、i POST先の関数はregistration_val

HTMLファイル

 <form method="POST" action='<?php echo site_url('/register/registration_val'); ?>' id='register_form' >
   <input type="login" name="register_first_name" id="register_form1">
   <input type='submit' value="Register" id='register_submit'>
 </form>

問題は、[SUBMIT] ボタンをクリックすると、jQuery が機能せず、代わりにフォームがコントローラーに送信され、エラー メッセージが表示されることです。
フォームの送信を防ぐことはできません (これで問題は解決すると思います)。Click イベントは完全に無視されます。前もって感謝します

4

2 に答える 2

7

submitの代わりにイベントで運試しclick:

$('form').submit(function(e){//
   e.preventDefault();
    var first_name = $('#register_form1').val();


    $.ajax({
        type: "POST", 
        async: false, 
        url: base_url+"register/registration_val",   
        data: "register_first_name="+first_name,
        success: function(data){
            $('#inferiz').html(data);
        },
        error: function(){alert('error');}
    });     
});

from に がid置換'form'されている場合'#{formId}'

ノート:

  • コードは、DOM Ready イベント コールバック内にある必要があります。
  • DOM 対応のフォームが存在しない場合は、delegate イベントを使用する必要があります。

これのように:

$('body').on('submit', 'form', function(e){
   e.preventDefault();
    var first_name = $('#register_form1').val();    

    $.ajax({
        type: "POST", 
        async: false, 
        url: base_url+"register/registration_val",   
        data: "register_first_name="+first_name,
        success: function(data){
            $('#inferiz').html(data);
        },
        error: function(){alert('error');}
    });     
});

bodyより近い静的要素 (存在する場合) に置き換えるだけで、パフォーマンスが向上します。

幸運を!

于 2012-05-01T22:09:29.603 に答える
0

クリックイベントの最後に置くreturn false;と、フォームをコントローラーに送信するべきではありません..

于 2012-12-22T09:25:39.680 に答える