Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当一个";无关的;html选择元素没有选择任何选项?_Javascript_Jquery_Html_Html Select_Onchange - Fatal编程技术网

Javascript 当一个";无关的;html选择元素没有选择任何选项?

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'

如果特定的select元素没有选择选项,我想退出复选框的更改([un]check)事件。在“ready”(准备就绪)函数开始时,我使用此代码测试了select元素的值,但未选择任何内容:

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');
});

谢谢不过,我颠倒了逻辑-我使用“!”复选框从事件返回-如果单元没有更改,我退出复选框事件处理程序。