HTML选中select的指定项后text不可编辑

Foreword

这周好忙,Coursera也没来得及看,在公司做网页设计,为了保持我CSDN每周不断更,所以还是抽点时间写点儿东西。那就来说一下昨天晚上花费了我一个小时的bug!

要是我能在今天之前写完我就再来谈谈这周感想。

昨天晚上睡不着的时候脑子里想了很多东西,想HTML怎么写,不过我发现我每次躺床上想学术问题第二天一定忘得一干二净。更多的是一种夜深人静之后才会显现出的烦躁恐惧焦虑,被白天忙忙碌碌压抑了的情感。之前看《人名的名义》中印象最深的是祁同伟最后说的“胜天半子”,人生如棋,也如赌局,一直以来都很想去赌我会赢,虽然现在不知道最后会不会输,反正是赢不了。大概有这个想法的时候就已经注定无法赢的漂亮了,因为“半子”就是命运与我力量差距的体现,每一步都要如履薄冰最终只会摔的更疼。

虽然我一直很喜欢宗教文化,原本以为就算有一天我成了信徒,那也一定是因为宗教艺术,但没想到我竟然有一天会想要相信“来世”这种宗教信仰,有这种想法的时候被自己吓到了。命运让我注定无法实现的梦想,无法拥有的生活,我必须接受吗,可是我之前就是个“胜天半子”的赌徒啊,我怎么甘心放弃呢,所以如果有“来世”,我就可以寄托希望。那些信徒们呀,可能都有自己的苦处吧,只有这种虚无缥缈的前世和来生,才可以化解他们的悲痛,给他们奋斗下去的动力。可怜可笑可悲。

可能人想的多了就会奇奇怪怪。原本打算每天运动的,结果这周就下雨了,我命由天不由我啊,希望下周好天气,给我一点儿情绪宣泄的出口。

目标功能及现象

我想要达到的效果:

  • 将本地IP、子网掩码、网关地址分为四段输入,并且控制文本输入框大小
  • 读取select选中项
  • 当IP地址类型选择DHCP时,本地IP、子网掩码、网关地址的文本输入框都不可编辑。

效果虽然有点儿丑,但大概就是这样。

在这里插入图片描述

控制文本框大小

  • 最简单的一种就是直接在HTML的input里加属性,类似于这样:

    <!-- HTML -->
    <input id="staticIPInput1" type="text" value="192" style="width:80px;">
    

    但是因为我有12个文本框嘛,我想在CSS里修改文本框属性,一次性配置12个文本框(然后就开始作了)……

  • 还是有办法的,就是给自己埋下了一大颗雷

    (这个写法太流氓了,12个文本框共用一个id,现在想想就不对嘛……)

    /* CSS */
    input#IPInput{
        width:80px;
    }
    
    <!-- HTML -->
    <input id="IPInput" type="text" name="staticIPValue" value="">&nbsp;-
    <input id="IPInput" type="text" name="staticIPValue" value="">&nbsp;-
    <input id="IPInput" type="text" name="staticIPValue" value="">&nbsp;-
    <input id="IPInput" type="text" name="staticIPValue" value="">
    

读取select选中项

通过id找到select,提取选中项的value

// javascript
function IPModeSelection() {
    var index = document.getElementById("IPMode").selectedIndex;
    var val = document.getElementById("IPMode").options[index].value;
    console.log(val.toString());
}

选中select指定项后文本框不可编辑

  • readonly

    文本框不可修改,但是可以选中或复制

    <!-- HTML -->
    <input type="text" name="input1" value="不可编辑文本框" readonly>
    
  • disabled

    文本框不可修改,不可选中,不可复制

    <!-- HTML -->
    <input type="text" name="input1" value="不可编辑文本框" disabled>
    
  • 在js里修改文本框属性

    // javascript
    function IPModeSelection() {
        var index = document.getElementById("IPMode").selectedIndex;
        var val = document.getElementById("IPMode").options[index].value;
        console.log(val.toString());
        if (val == "DHCPIPSelection") {
            for (var i = 1; i < 5; i++) {
                document.getElementById("staticIPInput" + i.toString()).disabled = true;
                document.getElementById("subnetMaskInput" + i.toString()).disabled = true;
                document.getElementById("gatewayAddressInput" + i.toString()).disabled = true;
            }
        } else {
            for (var i = 1; i < 5; i++) {
                document.getElementById("staticIPInput" + i.toString()).disabled = false;
                document.getElementById("subnetMaskInput" + i.toString()).disabled = false;
                document.getElementById("gatewayAddressInput" + i.toString()).disabled = false;
            }
        }
    }
    

Conclusion

出错的原因就是文本框共用了一个id,所以js里面document.getElementById就有问题了,再加上我从getElementsByName改回ById的时候s没删掉……js都不报个错嘛。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值