luci

A textbox need to be visible or Hidden based on radio option selected in Openwrt Luci


I want to make visible or hidden a textbox based on radio option selected in openWRT Luci.

Is there any way to avoid JavaScript?

Thanks in advance


Solution

  • yah Raihanhbh it's available in openwrt luci, you need to use dependent. base on luci documentation let describe how depends work.

    CBI provides the :depends() method on option objects that allow to dynamically show or hide the object field depending on the value in some other field.

    the method is called as obj:depends( some_other_option, value ). "depends" parameter is linked with "OR"

    --Now let an example

    local t=require"luci.model.network".init()
    local e=require"luci.model.firewall".init()
    local i=require"luci.util"
    local e=require"luci.model.uci".cursor()
    local u=require"luci.sys".net
    

    --Create model

    m = Map("firewall1", translate("firewall"))
    s = m:section(NamedSection, "dmz", "")
    

    --create radio button

    f1 = s:option(ListValue, "dmz", "Current DMZ Status:") -- Creates an element list (select box)
    f1.widget="radio"
    f1:value("disable", "Disable") -- Key and value pairs
    f1:value("enable", "Enable")
    f1.default = "disable"
    function f1.write(self, section, value)
        return Flag.write(self, section, value)
    end
    

    --TextBox

    f2=s:option(Value,"netmask1")
    f2:depends("dmz","disable")
    function f2.cfgvalue(self,section)
        local val = self.map:get(section, "netmask")--Value.cfgvalue(self, section)
        return val
    end
    

    --Return model

    return m;
    

    above textbox netmask1 dependent on radio button dmz