snipt

Ctrl+h for KB shortcuts

JavaScript

pseudo-code to handle ignoring JS modal boxes by clicking outside the box

/* trigger: 		   whatever triggers the modal box
 * modalBoxTopmostWrapper: the root wrapper of the modal box
 */

$(trigger).click(function(event){
	
    /* show modal box */

    $(document).bind("click.confirmation", function(e){
        if( $(e.target).parents(modalBoxTopmostWrapper).length ) // stop if clicking the confirmation box
            return;
		
	/* close modal box */
		
        $(document).unbind("click.confirmation");
    });
    event.stopPropagation(); // to prevent click.confirmation from firing immediately
});
https://snipt.net/embed/b0e757bc1348041603b7d6c2cb710edc/
/raw/b0e757bc1348041603b7d6c2cb710edc/
b0e757bc1348041603b7d6c2cb710edc
js
JavaScript
18
2019-07-16T03:56:21
True
False
False
/api/public/snipt/16146/
pseudo-code-to-handle-ignoring-js-modal-boxes-by-clicking-outside-the-box
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1"> 1</a> <a href="#L-2"> 2</a> <a href="#L-3"> 3</a> <a href="#L-4"> 4</a> <a href="#L-5"> 5</a> <a href="#L-6"> 6</a> <a href="#L-7"> 7</a> <a href="#L-8"> 8</a> <a href="#L-9"> 9</a> <a href="#L-10">10</a> <a href="#L-11">11</a> <a href="#L-12">12</a> <a href="#L-13">13</a> <a href="#L-14">14</a> <a href="#L-15">15</a> <a href="#L-16">16</a> <a href="#L-17">17</a> <a href="#L-18">18</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a><span class="cm">/* trigger: whatever triggers the modal box</span> </span><span id="L-2"><a name="L-2"></a><span class="cm"> * modalBoxTopmostWrapper: the root wrapper of the modal box</span> </span><span id="L-3"><a name="L-3"></a><span class="cm"> */</span> </span><span id="L-4"><a name="L-4"></a> </span><span id="L-5"><a name="L-5"></a><span class="nx">$</span><span class="p">(</span><span class="nx">trigger</span><span class="p">).</span><span class="nx">click</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">){</span> </span><span id="L-6"><a name="L-6"></a> </span><span id="L-7"><a name="L-7"></a> <span class="cm">/* show modal box */</span> </span><span id="L-8"><a name="L-8"></a> </span><span id="L-9"><a name="L-9"></a> <span class="nx">$</span><span class="p">(</span><span class="nb">document</span><span class="p">).</span><span class="nx">bind</span><span class="p">(</span><span class="s2">&quot;click.confirmation&quot;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">){</span> </span><span id="L-10"><a name="L-10"></a> <span class="k">if</span><span class="p">(</span> <span class="nx">$</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">target</span><span class="p">).</span><span class="nx">parents</span><span class="p">(</span><span class="nx">modalBoxTopmostWrapper</span><span class="p">).</span><span class="nx">length</span> <span class="p">)</span> <span class="c1">// stop if clicking the confirmation box</span> </span><span id="L-11"><a name="L-11"></a> <span class="k">return</span><span class="p">;</span> </span><span id="L-12"><a name="L-12"></a> </span><span id="L-13"><a name="L-13"></a> <span class="cm">/* close modal box */</span> </span><span id="L-14"><a name="L-14"></a> </span><span id="L-15"><a name="L-15"></a> <span class="nx">$</span><span class="p">(</span><span class="nb">document</span><span class="p">).</span><span class="nx">unbind</span><span class="p">(</span><span class="s2">&quot;click.confirmation&quot;</span><span class="p">);</span> </span><span id="L-16"><a name="L-16"></a> <span class="p">});</span> </span><span id="L-17"><a name="L-17"></a> <span class="nx">event</span><span class="p">.</span><span class="nx">stopPropagation</span><span class="p">();</span> <span class="c1">// to prevent click.confirmation from firing immediately</span> </span><span id="L-18"><a name="L-18"></a><span class="p">});</span> </span></pre></div> </td></tr></table>
box, gui, javascript, js, modal