【问题标题】:Why can't I disable input or button elements on iOS?为什么我不能在 iOS 上禁用输入或按钮元素?
【发布时间】:2019-11-07 16:20:48
【问题描述】:

考虑以下代码 sn-p,它只是禁用网页上的所有按钮:

<script>
    var inputs = document.getElementsByTagName('button');
    for (var i = 0; i < inputs.length; i++) {
            inputs[i].disabled = true;
    }

    var seconds = 0;
    setInterval(calculateSeconds, 1000);
    function calculateSeconds()
    {
        seconds += 1;
        if(seconds > 5)
        {
            var inputs = document.getElementsByTagName("button");
            for (var i = 0; i < inputs.length; i++) {
                inputs[i].disabled = false;
            }
        }
    }
</script>

除了这不是一段很酷、写得很好或有目的的代码之外,它应该可以工作,并且可以在 Windows 桌面和 Android 上的所有浏览器上工作,除了在 iOS 中运行的浏览器;我使用 Chrome 和 Safari 在 iPhone 上对此进行了测试,但它不起作用。我找不到原因,根据http://caniuse.com/,没有任何语法被弃用或不受支持。这让我疯狂。我正在测试的网站上没有使用 CSS。它不适用于&lt;button&gt; 标签,也不适用于&lt;input type="button"&gt; 标签,也不适用于&lt;input type="submit"&gt; 标签。

有没有人有任何提示、资源或指针来说明为什么这在 iOS 设备上不起作用?

【问题讨论】:

    标签: javascript safari


    【解决方案1】:

    也许再次尝试使用输入而不是按钮,但不要直接设置属性,而是使用 removeAttr("disabled") 而不是将其设置为 false 并使用 inputs[i].setAttribute("disabled","disabled") 而不是 .disabled=true

    当我在谷歌上搜索 button disabled ios 时,我看到几篇帖子提到了 safari 和 &lt;button&gt; 的问题,所以它可能存在问题

    还有很多关于DOM 'disabled' property in javascript的讨论

    【讨论】:

    • 谢谢!您能否解释一下为什么直接设置属性不起作用?
    • 我没有找到任何文档为什么会这样,这只是我的经验,在一些只想使用当前标准的浏览器中,这些东西可能会过时 - 关于禁用有很多困惑="disabled" 禁用为独立属性和 .disabled=false 等 - 例如这里 stackoverflow.com/questions/23701560/…
    猜你喜欢
    • 2021-10-19
    • 2013-05-11
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 2019-11-26
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多