0

フォーム「テキスト入力」の検証を行っています。ユーザーが入力を空のままにすると、関数が実行を開始します。フィールドが1より大きい場合、関数には入りません。

問題は次のとおりです。最初に、ユーザーが入力を空のままにして関数を実行し、アラートを受け取りました。これで問題ありません。2回目は、ユーザーがAGE入力に10を追加しました。これもアラートを受け取りますが、そうすべきではありません。

注:年齢入力値は、別の関数(calc)から結果と呼ばれる変数に戻ります。

これはコードです:

$(document).ready(function(){
$('#btn_send').click(function(){
    //var result gets the value ffrom another function of input "Age" value. -> return thisform.Age.value
    var result = calc(document.getElementById("campaignform")); 
        if (result<1)
        {
            $("#campaignform").submit(function(event) {
            event.preventDefault(); alert ("prevent default");
            });
        }
        else{
        return true;
        };
});

});

したがって、2回目に[送信]をクリックしようとすると、$('#btn_send')。click(function()に入り、たとえばAGE(結果として返す)入力に67を追加したとしても、 IF atatementは次のとおりです:if(result <1)

私は開発にかなり慣れていないので、あなたが私を理解してくれることを願っています。間違えたらごめんなさい。この質問のより良いタイトルは何でしょうか?

よろしくお願いします、シャイ

4

1 に答える 1

0
        $("#campaignform").submit(function(event) {

今後フォームが送信されるたびに関数が呼び出されるように、フォームにイベント ハンドラーを追加します。そのイベント ハンドラーを再度削除することはないため、フィールドが修正された後でも、送信ごとに既定の防止機能が呼び出されます。

jQuery イベント ハンドラーはunbindメソッドを使用して削除できますが、通常は、ハンドラーを大量に追加および削除することは避けたほうがよいでしょう。ボタンのクリックをキャッチしてもすべてのフォーム送信を取得できない可能性があるため、より簡単で信頼性も高くするには、1 つの静的submitイベント ハンドラーですべてを実行します。次に例を示します。

$('#campaignform').submit(function(ev){
    var result= calc(this);
    if (result<1) {
        ev.preventDefault();
        alert('prevent default');
    }
});
于 2011-05-21T14:19:13.630 に答える