在部分验证下拉列表上启用按钮 - 语义UI(非常奇怪的工作)

时间:2018-06-15 19:58:07

标签: javascript semantic-ui

目标

检查是否选择了1列下拉列表并在语义UI中启用该按钮。 (参见下面的工作示例)。我项目的最终版本将有6个“列”/“屏幕”。

问题

不能更容易/更干净吗?正如您在小提琴中看到的那样,它为每一列运行代码。

我是如何运作的

不要问我哈哈...经过100次尝试多次if和其他工作后,我最终用“$(this)”为当前班级分配了一个ID。之后,它会查看具有相同类的所有元素的ID是否为空。如果元素ID都不为空,则启用该按钮。我使用下面的代码使它工作。感谢:Enable/Disable Button when multiple dropdown value is selected

在stackoverflow上找到的代码

$(function () {
        $('.picker').on('change', function () {     
            var SelectList = $('.picker');
            //Here i'll find how many dropdown are present
            for (var i = 0; i < SelectList.length ; i++) {
                //Here i need to check each dropdown value whether it selected or not
                if (SelectList[i].value != "") {
                    //If all dropdown is selected then Enable button
                    $("#Testing").attr("disabled", false);
                }
                else {
                    //Disable button if any dropdown is not selected
                    $("#Testing").attr("disabled", true);
                }
            }
        }); 
    });

以上代码,但根据我的意愿编辑

$(function () {
        $('#myform2').on('change', function () {     
            var SelectList = $('.ui.dropdown.selection.thisistwo');
                for (var i = 0; i < SelectList.length ; i++) {
                if (SelectList[i].id != "") {
                    $(".ui.right.labeled.icon.button.n2").attr( "disabled", false);
                }
                else {
                     $(".ui.right.labeled.icon.button.n2").attr("disabled", true);
                }
            }
        }); 
    });

正如你所看到的,我使用“SelectList [i] .id”来检查id是否是emtpy:!=“”

的jsfiddle

https://jsfiddle.net/StaphWar/kLy7ow61/62/

更新 - &gt;由NERBIZ&lt; 3

修复

刚才发现这也不起作用。如果您从底部的下拉列表中选择了某些内容,则会启用没有选择上述下拉列表的按钮。我刚刚在我的项目中实现了它。 -.-

新目标 可选字段。因此,如果有人选择“否”,则会隐藏2个下拉菜单并启用验证和下一个按钮。不是很难吗?我试过的大多数工作都没有。当在“是”和“否”之间切换时,按钮迟早会停止/启用。或者,当选择“是”时,最终验证不起作用。

尝试了很多事情,直到我犯了一个实际有效的错误。

(($(SelectList[i]).dropdown('get value') == "") && (THISISNOTHING == 'yes' ))

你看到“THISISNOTHING”的地方我做了一个错字,神奇地让它发挥作用。直到我看着控制台。由于“THISISNOTHING”没有定义。到目前为止,项目代码有0个错误。这有点触发了我的强迫症哈哈。

新目标:JSFiddle正常但有控制台错误 https://jsfiddle.net/StaphWar/kLy7ow61/170/

1 个答案:

答案 0 :(得分:2)

我编辑了你的小提琴: https://jsfiddle.net/kLy7ow61/88/

&#39;禁用&#39;以false开头,如果列中的任何下拉列没有值,则变为true。

$(function () {
  $('#myform').on('change', function () {
    var SelectList = $('.ui.dropdown.selection.thisisone');
    var disable = false;

    for (var i = 0; i < SelectList.length ; i++) {
      if ($(SelectList[i]).dropdown('get value') == "") {
        disable = true;
      }
    }

    $(".ui.right.labeled.icon.button.n1").attr( "disabled", disable);
  }); 
});