0

内部にフォームを含む Html テンプレートがあります。

<form id="my_form" method="post" action="/register/">
<input id="cemail" name="email" size="25" class="textbox required email" style="width: 250px"> <br><br>
<input id="csubmit" type="submit" onclick="Clicked();" value="Send" />

紹介された電子メールが正しいかどうかをテストするための Jquery コードもあります。

<script type="text/javascript" src="/js/jquery.validate.js"></script>
<script>
    function Clicked() {
        $("#my_form").validate().form();
        value = $("#cemail").val();
        alert("ufffff");
        $.get("/exists/", {email: value}, function(data) {
            $('#text')[0].innerHTML=data;   
        });
    }
</script>

ここまではすべて問題ありません。プログラムを実行すると問題が発生します。常に action="/register" が起動されますが、それが発生することは望ましくありません。私はそれを望みます:

jquery がクライアント ブラウザで非アクティブ化されている場合は、フォームが持つアクションを実行します。jquery がクライアント ブラウザでアクティブ化されている場合は、フォームのアクションではなく、"Clicked()" 関数を実行するだけです ("/register/" --> django 関数を呼び出します)。

誰かが私がそれをするのを手伝ってくれますか? 出来ますか?

4

1 に答える 1

0

関数から false を返す必要がありますClicked

JavaScript のイベント ハンドラーからの戻りfalseは、その要素 (リンクまたはボタン) に関連付けられた既定のアクションを実行しないようにブラウザーに指示します。

非常に正確になりたい場合は、実際にフォームのsubmitアクションに自分自身を結び付け、そこで false を返す必要があります。これにより、ユーザーはリターン キーを押してフォームを送信できますが、ブラウザは POST を実行できなくなります。

$('#my_form').submit(function(){
    $("#my_form").validate().form();
    value = $("#cemail").val();
    alert("ufffff");
    $.get("/exists/", {email: value}, function(data) {
        $('#text')[0].innerHTML=data;   
    });
    return false;
});

JavaScript が無効になっている場合、ブラウザは通常、フォームのデフォルト アクションを実行します。

于 2013-02-26T07:18:42.993 に答える