2012-02-03 19 views
0

ユーザーの操作を確認するための確認アラートがあります。 "キャンセル" のJqueryの単純なif文の混乱

function disableSubmitButton() { 
    jQuery("#submitButton").attr("disabled", "true"); 
    jQuery("#rent_space").submit(); 
} 

、以下: "OK" をクリックして上の

は、それが次のコードを実行する必要があります。

if (!confirm('Are you sure you want to proceed ?')) { 
    return false; 
} 

しかし、私のコードは、現在フォーマットされている方法は、コードの最初のブロックは、ボタンが押されているのにかかわらず実行されます。

これはコードを動かすだけのことだと思いますが、前例の試行がすべて失敗したため正しく実行する方法がわかりません。どんな助けもありがたい。ありがとう!

全コード:

<script> 
    jQuery(document).ready(onDocumentReady); 
     function onDocumentReady() { 

      jQuery("#submitButton").click(disableSubmitButton); 

      jQuery('#submitButton').click(function() { 
       if (!confirm('Are you sure you want to proceed ?')) { 
        return false; 
       } 
      }); 

     } 
     function disableSubmitButton() { 
      jQuery("#submitButton").attr("disabled", "true"); 
      jQuery("#rent_space").submit(); 
     } 
</script> 
+0

#submitButtonとは何ですか?マークアップを表示できますか? – Vinnyq12

答えて

3

あなたが試すことができます:

//jQuery("#submitButton").click(disableSubmitButton); 

jQuery('#submitButton').click(function() { 
if (!confirm('Are you sure you want to proceed ?')) { 
    return false; 
} 
else 
{ 
    disableSubmitButton(); 
} 
}); 
1

あなたが本当に送信ボタンを無効にする必要がありますか?もう一方のクリックでfalseを返すだけで十分です。

<script> 
    jQuery(document).ready(onDocumentReady); 
     function onDocumentReady() { 

      jQuery('#submitButton').click(function() { 
       if (!confirm('Are you sure you want to proceed ?')) { 
        return false; 
       } 
      }); 

     } 

</script> 

しかし、私が代わりに提出するイベントにバインドします:

<script> 
    jQuery(document).ready(onDocumentReady); 
     function onDocumentReady() { 

      jQuery('#rent_space').submit(function() { 
       if (!confirm('Are you sure you want to proceed ?')) { 
        return false; 
       } 
      }); 

     } 

</script> 
+0

私は彼がフォームが提出されたときにだけ彼がそれを無効にしていると思う。関数名は関数の動作だけを反映するものではないので、少し混乱します。 –

+0

+1私はより良い提出するバインディングが好きです。 –

1

あなたが唯一のイベントリスナーを必要とします。条件はリスナー本体で処理できます。

jQuery("#submitButton").click(function(e) { 
    e.preventDefault(); 
    if(confirm("...")) { 
    jQuery("#submitButton").attr("disabled", "true"); 
    jQuery("#rent_space").submit(); 
    } 
}); 

NB。イベントのデフォルトの動作を防ぐには、return falseの代わりにe.preventDefault()を使用する必要があります。

+0

e.preventDefault()は魅力的に機能しました。ありがとうございました ! – JFFF

1

ハリの答えは正しいです。私はそれはあなたの提案のおかげで動作するようになった

jQuery("#submitButton").click(function() { 
    if (confirm("Are you sure you want to proceed?")) { 
     disableSubmitButton(); 
    } else { 
     return false; 
    } 
}); 
0

編集編集:私は(わずかに)より多くの慣用を好みます。ありがとうございました。 :)

Heresは機能したコードです。

 <script> 
     jQuery(document).ready(onDocumentReady); 
      function onDocumentReady() { 

       jQuery('#submitButton').click(function() { 
        if (!confirm('Are you sure you want to proceed ?')) { 
         return false; 
        } 
        else{ 
         jQuery("#submitButton").click(disableSubmitButton); 
        } 
       }); 

      } 
      function disableSubmitButton() { 
       jQuery("#submitButton").attr("disabled", "true"); 
       jQuery("#rent_space").submit(); 
      } 
    </script> 
+0

これをしないでください: 'jQuery("#submitButton ")。click(disableSubmitButton);'。それは別のクリックイベントをアタッチしていて、呼び出していません。既にそのボタンのクリックイベントがあります。私は驚いています - フォームは提出されていません、それですか? –

+0

おっと、そうです。バッドコピーパスタ、この行は実際には他の{ disableSubmitButton(); }私のコード:) – JFFF

+0

あなたはあなたが実装することを選択しなかったという答えを受け入れましたが、それは大丈夫です。 –