答案 0 :(得分:1)
禁用的元素不会触发任何鼠标事件。因此,即使从禁用选择框中也无法捕获单击。您可以在其周围保留一个包装器div,然后在其上放置onclick事件,您可以使用.siblings()
获取select元素并检查它是否已禁用属性。
启用select时,必须删除包装器div。为此你可以hide()
包装div并在需要时再次显示它。
这样的事似乎有效:
<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>