简体   繁体   English

单击禁用时如何触发警报消息<select>选项框?

[英]How do I fire alert message when clicking on disabled <select> option box?

I want to fire an alert if clicking on a disabled <select> option box.如果单击禁用的<select>选项框,我想触发警报。 When the <select> box is not disabled it should not fire, regardless if the option within the option select is disabled.<select>框未被禁用时,它不应触发,无论选项选择中的选项是否被禁用。

It should ONLY fire when the entire <select> box is disabled, regardless if the individual option itself is disabled or enabled.它应该只在整个<select>框被禁用时触发,无论单个选项本身是禁用还是启用。 An individual option alone should not effect the alert.单独的选项不应影响警报。

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script type='text/javascript'> $(document).ready(function(){ $('#optDir').click(function(){ alert("The Box is dissabled... ``Text Direction`` can only be chosen, when choosing ``Auto Detect`` languadge"); }); }); </script> <script type="text/javascript"> $(document).ready(function () { $("#opt").change(function () { if ($(this).val() == "auto") { $("#optDir").prop('disabled', false); } else { $("#optDir").prop('disabled', true); } }) }); </script> <script type='text/javascript'> function setRtL(obj) { var textbox = document.getElementById("SeekBox"); textbox.style.direction = ["ar","RightToLeft"].indexOf(obj.value) >=0 ? "rtl" : "ltr"; } </script> <div id="Layer1" style="position:relative; text-align:center; overflow:hidden; left:0px; top:0px; width:100%; height:auto;z-index:1;"> <select name="LangF" class="OBSMatch" id="opt" onchange="setRtL(this)"> <option value="auto">Auto Detect</option> <option value="ar">Arabic</option> <option selected value="en">English</option> <option value="fr">French</option> <option value="de">German</option> <option value="ru">Russian</option> <option value="es">Spanish</option> </select> <select disabled name="LangF" class="dis-element" id="optDir" onchange="setRtL(this)" title="``Text Direction`` can only be chosen, when choosing ``Auto Detect`` languadge"> <option selected value="" disabled>Only with: Auto Detect</option> <option value="">Text: Left To Right</option> <option value="RightToLeft">Text: Right To Left</option> </select> </div>

NOTE: All model codes are simplified, the entire work is much bigger.注意:所有型号代码都简化了,整个工作要大得多。

Disabled elements don't trigger any mouse events.禁用的元素不会触发任何鼠标事件。 So you can't capture click even from disabled select box.因此,即使从禁用的选择框中也无法捕获点击。 You can keep a wrapper div around it and then put onclick event on it from there you can get the select element using .siblings() and check if it has disabled property.您可以在其周围保留一个包装器 div,然后在其上放置 onclick 事件,您可以使用.siblings()获取选择元素并检查它是否具有禁用属性。 You will have to remove the wrapper div when you enable the select.启用选择时,您必须删除包装器 div。 for that you can hide() the wrapper div and show it again when needed.为此,您可以hide()包装器 div 并在需要时再次显示它。

Something like this seems to work:像这样的东西似乎有效:

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script type='text/javascript'> function checkDisableSelect(obj){ var select = $(obj).siblings('#optDir').first(); if($(select).attr('disabled')) alert("The Box is dissabled... ``Text Direction`` can only be chosen, when choosing ``Auto Detect`` languadge"); } </script> <script type="text/javascript"> $(document).ready(function () { $("#opt").change(function () { if ($(this).val() == "auto") { $("#optDir").prop('disabled', false); $('#selectWrapper').hide(); } else { $("#optDir").prop('disabled', true); $('#selectWrapper').show(); } }) }); </script> <script type='text/javascript'> function setRtL(obj) { var textbox = document.getElementById("SeekBox"); textbox.style.direction = ["ar","RightToLeft"].indexOf(obj.value) >=0 ? "rtl" : "ltr"; } </script> <select name="LangF" class="OBSMatch" id="opt" onchange="setRtL(this)"> <option value="auto">Auto Detect</option> <option value="ar">Arabic</option> <option selected value="en">English</option> <option value="fr">French</option> <option value="de">German</option> <option value="ru">Russian</option> <option value="es">Spanish</option> </select> <div id="selectContainer" style="position:relative"> <select disabled name="LangF" class="dis-element" id="optDir" onchange="setRtL(this)" title="``Text Direction`` can only be chosen, when choosing ``Auto Detect`` languadge"> <option selected value="" disabled>Only with: Auto Detect</option> <option value="">Text: Left To Right</option> <option value="RightToLeft">Text: Right To Left</option> </select> <div id="selectWrapper" style="position:absolute; top:0; left:0; bottom:0; right:0;" onclick="checkDisableSelect(this)"></div> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM