2017-02-10 1 views
0

私は実行時にコントロールを有効/無効にできるJavascriptアプリケーションを用意しています。私は、ネストされた入力とボタンの有効化/無効化に成功しているが、丸で囲まれたアイコンが選択できないように、これまでのところ、私は、本部でのonclickイベントを無効にするには成功していなかった:Javascript/JQueryを使用してネストされたDivのOnClickをプログラムで無効にする

enter image description here

生成されたHTMLは次のようになります。

<div id="56f81c3d-9666-4dab-8f35-d36e894f426f" class="field alert-success"> 
    <div class="field-name">By default I am disabled - Single Photo</div> 
     <div id="56f81c3d-9666-4dab-8f35-d36e894f426fPhoto" class="clearfix" style="cursor: pointer; max-width: 100%; max-height: 100%;" onclick="ffffield.getFieldHandler('PhotoPicker').showPhotoCapture(this, '56f81c3d-9666-4dab-8f35-d36e894f426f');"> 
      <img class="pull-right" src="/MySite.Web/Content/device/images/chevronRight.png" style="width: 20px; position:relative; top: 7px;"> 
      <img class="pull-right" src="/MySite.Web/Content/device/images/[email protected]" style="width: 40px; position:relative; top: -5px;"> 
     </div> 
    </div> 
</div>. 

このスニペットでは、無効にする必要があるのは「onclick」です。私は気難しくない - それは、ポインタまたはonclickを無効にすることができます。

$("#56f81c3d-9666-4dab-8f35-d36e894f426f").children().off('click'); 

$("#56f81c3d-9666-4dab-8f35-d36e894f426f input").prop("disabled", true); 

$("#"#56f81c3d-9666-4dab-8f35-d36e894f426f input").attr("disabled", true); 

$(""#56f81c3d-9666-4dab-8f35-d36e894f426f input").attr("disabled", "disabled"); 

私はこの作品を作るために、次の試みを試してみました

他のいくつかのstackoverflow質問に基づいて。

+0

http://stackoverflow.com/questions/18982642/無効にしてから有効にするonclick-event-on-div-with-javascript – epascarello

+0

'div [disabled] {pointerEvents:none; } ' – epascarello

+0

@epascarelloレスポンスありがとうございます。上記のstackflowで受け入れられた答えを試しました。ポインタを無効にするjqueryの方法は何ですか? –

答えて

1

.off()は、.on()(または他のjQueryメソッドはすべて内部で.on()を呼び出します)で追加されたイベントリスナーのみを無効にできます。 onclick属性を使用して追加されたイベントリスナを削除するには、onclickプロパティを再割り当てする必要があります。

$("#56f81c3d-9666-4dab-8f35-d36e894f426f").children().prop('onclick', null); 
+0

それは魅力的に機能しました。ユーザーがそれを切り替えることができるので、どのようにして再度有効にするのですか? –

+0

古い値を変数に保存します。 – Barmar

+0

残念ながら、最後の値を保存することはできません。何百ものインスタンスが存在する可能性があります(私が新しい構造体を構築しない限り)。しかし、私はその場で同じ方法を再生成することができます。この場合、どのように見えますか? showPhotoCapture(this、 '"+ targetField.id +" Photo'); "); $("# "+ targetField.id).on( 'click'、" ffffield.getFieldHandler( 'PhotoPicker' targetField.idは#56f81c3d-9666-4dab-8f35-d36e894f426fですか? –

0

は、このコードを試してみてください。

function disableDiv(div) { 
    div.addEventListener("click", function (event) { 
     event.stopPropagation(); 
    }, true); 
} 

// call the disable div handler 
disableDiv(document.getElementById("56f81c3d-9666-4dab-8f35-d36e894f426f")); 
関連する問題