2017-12-07 11 views
1

ユーザが選択する値を持つ単純なdiv配列と、自分の番号に入れることができる「その他の」フィールドがあります。私は選択と入力フィールドをクリアするクリアdiv(右下)を持っています。しかし、私はまた、含まれているdivの上でクリックイベントを持っていたい。javascript stopPropagationが入力フィールドで機能しない

私は検索しましたが、何もそのトリックをやっていないようです。近くに来るものはstopPropagationを使用しているので、divをクリックするとdivのスクリプトがトリガーされません。それはすべてのdivで機能していますが、何らかの理由で入力フィールドで機能していません。私は数のスクラバーをクリックするたびに、またはそれを含むdivのリセットスクリプトを呼び出すフィールドに入力してみてください。 stopPropagationを動作させない入力フィールドについて何かありますか?または私は何かが欠けている。私が見つけた他のもののどれもそれを解決するように見えなかった。

HTML

<div id="don_options"> 
    <div class="group"> 
     <div class="col"><span class="don">xxx</span></div> 
     <div class="col"><span class="don">xxx</span></div> 
     <div class="col"><span class="don">xxx</span></div> 
    </div> 

    <div class="group"> 
     <div class="col"><span class="don">xxx</span></div> 
     <div class="col"><span class="don">xxx</span></div> 
     <div class="col"><span class="don">xxx</span></div> 
    </div> 

    <div class="group"> 
     <div class="col"><span class="don">xxx</span></div> 
     <div class="col"><span class="don">xxx</span></div> 
     <div class="col"><span class="don">xxx</span></div> 
    </div> 

    <div class="group"> 
     <div class="col"><span class="don">Other</span><br class="mobile"><input id="other" name="other" type="number" min="3" step=".01" value="" size="25" maxlength="255" class="form-text2" placeholder="Other"></div> 
     <div class="col">&nbsp;</div> 
     <div class="col"><span class="don">Clear</span></div> 
    </div> 
</div> 

Javascriptを

$('#don_options').on('click', function(e) { 
    resetDon(); 
}); 

$('.don').on('click', function(e) { 
    e.stopPropagation(); // stop bubbling to parent element 
    //e.preventDefault(); 
    //e.cancelBubble = true; 
    //e.stopImmediatePropagation(); 

    //lots of buttonesk goodness here 
}); 

$('#other').on('keyup change click', function(e) { 
    e.stopPropagation(); // stop bubbling to parent element 
    //e.preventDefault(); 
    //e.cancelBubble = true; 
    //e.stopImmediatePropagation(); 

    //more goodness here for the input field 
}); 

function resetDon() { 
    //clear "buttons" here 
} 

の視覚のための迅速なスクリーンショットを追加します。ブラックボックスはこのコードで含むdivの enter image description here

+0

変更がクリックによって発生した場合は、タイプ番号なので、キャンセルはクリックが発生する「変更」イベントをキャンセルしますが、「クリック」イベント自体はキャンセルします。 – Taplar

+0

番号スクライバーの矢印をクリックしても? –

+1

これはクリックです。あなたが処理しているイベントは、キーアップイベントまたは変更イベントです。それは通常作成される他のイベントには影響しません。あなたは、特定のイベントをバブリングから止めています。 – Taplar

答えて

5

です:

$('.don').on('click', function() { 
    e.stopPropagation(); // stop bubbling to parent element 
    ... 
}); 

eは未定義です。関数のパラメータでなければなりません。

$('.don').on('click', function(e) { 
    e.stopPropagation(); // stop bubbling to parent element 
    ... 
}); 

$.on()の完全なドキュメントを参照してください。イベントは、関数(ハンドラ)のパラメータとして渡す必要があります。もちろん、それと対話したくないときはいつでもスキップすることができます。

+1

devツールコンソールのエラーで容易に気づかれていた何かが、 – charlietfl

+0

のアポロジを投げて、私は関数内に電子を持っています...質問を更新しました。それでも入力フィールドの入力フィールドでは動作しません。 –

+0

@VikingNM、[mcve](ライブスニペット - ここまたはjsFiddle)でアップデートしてください。また、あなたが期待していることを明確に述べ、いつ、それを達成する方法を見つけるでしょう。検証可能な例がなければ、タスク記述は非常に曖昧です。 –

関連する問題