Javascript 当一个";无关的;html选择元素没有选择任何选项?
如果特定的select元素没有选择选项,我想退出复选框的更改([un]check)事件。在“ready”(准备就绪)函数开始时,我使用此代码测试了select元素的值,但未选择任何内容:Javascript 当一个";无关的;html选择元素没有选择任何选项?,javascript,jquery,html,html-select,onchange,Javascript,Jquery,Html,Html Select,Onchange,如果特定的select元素没有选择选项,我想退出复选框的更改([un]check)事件。在“ready”(准备就绪)函数开始时,我使用此代码测试了select元素的值,但未选择任何内容: var unitval = $('#unitsselect').val(); alert(unitval); 警报显示为“空”,因此我尝试了以下方法: $("#ckbx_produceusage").change(function () { var unitval = $('#unitsselect'
var unitval = $('#unitsselect').val();
alert(unitval);
警报显示为“空”,因此我尝试了以下方法:
$("#ckbx_produceusage").change(function () {
var unitval = $('#unitsselect').val();
if (unitval == null) {
return;
}
alert('from ckbx_produceusage change event');
});
不过,这并没有导致解决方案的开始,因为它告诉我有一个IIS问题——它甚至没有向我显示错误页面。但是,一旦我取消了空检查:
$("#ckbx_produceusage").change(function () {
var unitval = $('#unitsselect').val();
//if (unitval == null) {
// return;
//}
alert('from ckbx_produceusage change event');
});
…我看到了有关选中复选框的警告
那么,当select元素没有进行选择时,如何退出事件处理程序呢
更新
我尝试了霍拉西奥·贝尼特斯的建议:
$("#ckbx_produceusage").change(function () {
var unitval = $('#unitsselect').val();
if (unitval == -1) {
event.stopPropagation();
event.preventDefault();
};
alert('from ckbx_produceusage change event');
});
…但还是看到了警报。所以我又加了一个:
$("#ckbx_produceusage").change(function () {
var unitval = $('#unitsselect').val();
alert(unitval);
if (unitval == -1) {
event.stopPropagation();
event.preventDefault();
};
alert('from ckbx_produceusage change event');
});
…并且它是“null”(不是“-1”)
这是将选项添加到“单位选择”的代码:
<select class="form-control, dropdown" id="unitsselect" name="unitsselect">
<option disabled selected value="-1">Please choose a Unit</option>
@foreach (var field in units)
{
<option id="selItem_@(field.unit)" value="@field.unit">@field.unit</option>
}
</select>
请选择一个单位
@foreach(单位为var字段)
{
@现场设备
}
当页面显示时,显示值为-1的“请选择一个单位”。但是选中“ckbx_produceusage”复选框会显示“null”,然后显示“from ckbx_produceusage change event”
当没有从“单位选择”中选择任何选项时,如何退出/返回复选框的更改事件?检查未选择的选项时,我们要做的是给第一个选项一个值=-1和一个通用文本“请选择一个选项”,以强制用户选择一个选项,因此在您的评估中,您可以询问
if($('#unitsselect').val() == "-1" ){
event.stopPropagation(); //this line prevents the element's event propagation
event.preventDefault(); // this line prevents the default element behaviour
};
更新
根据你的最新消息,我为你做了一把小提琴
元素的disabled属性阻止了value=-1的概念,在我发布的小提琴中,您可以尝试在第一个option元素上添加disabled属性,并查看结果。您可以使用变量跟踪用户是否更改了select元素
// If the change event occurs on the select element the user made a selection.
// Set a variable called unitSelectChanged to true if they do.
var unitSelectChanged = false;
$("#unitsselect").change(function(){
unitSelectChanged = true;
});
$("#ckbx_produceusage").change(function () {
// Exit from the handler if that variable is true
if (unitSelectChanged) {
return;
}
alert('from ckbx_produceusage change event');
});
谢谢不过,我颠倒了逻辑-我使用“!”复选框从事件返回-如果单元没有更改,我退出复选框事件处理程序。