2016-05-09 6 views
3

jqueryバリデーションを行うフォームに問題があります。無効なボタンは、まだイベントをクリックして聞きます。

(CoffeeScriptの):特定の入力フィールドが記入されていない場合は、disabled属性追加して「前進」ボタンを無効にする必要があります。

if errors 
    $('.btn-move-forward').attr("disabled", true) 

動作しますが、私は、そのボタンのクリックイベントを持っています

$('.btn-move-forward').click -> 
    $('#step2, #step3').toggle() 

.btn-move-forwardは、ボタンが無効になっているときにクリックイベントを発生させないと思っていますが、それはあります。

まず、すべてのブラウザ仕様ではこのようなことは起こらないと定義されているため、わかりません。このように、イベントリスナーを

$('.btn-move-forward').click -> 
    if !$(this).is(:disabled) 
    $('#step2, #step3').toggle() 

またはこの

$('.btn-move-forward').click -> 
    if $(this).prop("disabled", false) 
    $('#step2, #step3').toggle() 

または組み合わせ::とにかく、私は次のようなものをすることによって、それを回避しようとした

$('.btn-move-forward').on 'click', '.btn-move-forward:enabled', -> 
    $('#step2, #step3').toggle() 

いいえ、このウォンのすべて正しく動作しません。ボタンはまだ移動転送ボタンとして動作します。

私が欲しいのは、無効にされている場合、onclickを聞いていないボタンです。

+0

は 'button'または'入力タイプは、= "ボタン" '.btn-移動-forward'要素です'?そうでない場合、disabled属性は機能しません。これらのタイプのいずれかである場合は、コードが動作するはずです:https://jsfiddle.net/pcokf7d8/。コンソールにエラーがないかどうかチェックし、 'disabled'プロパティが確実に適用されていることを確認する必要があります。 –

+0

それは@ RoryMcCrossanでした!以前は単純なdivだったので、それをボタン要素にしました。あなたが返信したら私はあなたの答えを受け入れるでしょう。 – DonMB

+0

ありがとう、喜んで助けてください。私はあなたに答えを加えました。 –

答えて

4

オフ

$('.btn-move-forward').prop("disabled", true) 
+0

P.S: '.prop()'は 'disabled'または' checked'要素のプロパティを設定するのに最適です –

+0

True :)この古い答えを更新してスニペットも含めました –

1

代わりにprop()を使用するように変更してください。クリックイベント

$('.btn-move-forward').off('click'); 
3

くださいdisabledプロパティは、要素のみを形成するために適用されます。つまり、.btn-move-forward要素が<button>または<input type="button">でない場合、disabled属性は無効になります。あなたはここにbuttonを使用して実施例を参照することができ

$('.btn-move-forward').prop("disabled", true).click(function() { 
 
    console.log('Moving forward...'); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<button class="btn-move-forward">Move forward</button>

関連する問題