【问题标题】:javascript not working in all browsersjavascript 不适用于所有浏览器
【发布时间】:2013-04-17 00:34:25
【问题描述】:

我到处寻找并尝试了各种脚本,但我一直遇到同样的问题。

我正在尝试禁用或隐藏提交按钮,直到选中复选框。

我遇到的问题是,除非我打开了兼容性,否则在 IE10 中没有任何功能,而且它们在大多数情况下都无法在 FF 20.0.1 中运行。

这是我迄今为止尝试过的。


    <input type="checkbox" name="agree" value="yes" onclick="agreed.disabled = !this.checked" />Do you Agree? &nbsp;
    <input type="submit" name="agreed" id="agreed" value="{L_AGREE}" class="button1" disabled="disabled" />

<script type="text/javascript">
function checkSubmit(ele, id) {
    x = document.getElementById(id);
    if (ele.checked == true) x.disabled = false;
    else x.disabled = true;
}
</script>

<input type="checkbox" name="myCheck" onclick="checkSubmit(this, 'agreed')" value="y" />Do you Agree? &nbsp;
<input type="submit" name="agreed" id="agreed" value="{L_AGREE}" class="button1" disabled="disabled" />

<script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.js'></script>
<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){
$("#terms").click(function() {
    if ($(this).is(':checked')) {
        $('#agreed').removeAttr('disabled');
    } else {
        $('#agreed').attr('disabled', 'disabled');
    }
});

});//]]>  

</script>

            <input type="checkbox" class="required" id="terms"/>Do you Agree? &nbsp;
            <input type="submit" name="agreed" id="agreed" value="{L_AGREE}" class="button1" disabled="disabled" />

我已经尝试了许多其他方法来做到这一点,但仍然遇到 IE10 或 FF 的问题。

我需要的是帮助让某些东西在所有浏览器中都能正常工作。

【问题讨论】:

    标签: javascript button input


    【解决方案1】:

    第一个示例更可能适用于某些浏览器,而不适用于其他浏览器,具体取决于它们是否通过 ID 将元素放在 windowdocument 对象上。

    要修复它,请使用document.getElementById()

    <input type="checkbox" name="agree" value="yes" onclick="document.getElementById('agreed').disabled = !this.checked" />Do you Agree? &nbsp;
    <input type="submit" name="agreed" id="agreed" value="{L_AGREE}" class="button1" disabled="disabled" />
    

    只要函数是全局的,第二个应该可以在任何浏览器中工作,尽管你可以缩短它。

    function checkSubmit(ele, id) {
        document.getElementById(id).disabled = !ele.checked;
    }
    

    【讨论】:

    • @gdoron:你也一样! :-) 不知道我会回来多久,但我确实怀念对懒惰的人发脾气。
    • 全局是什么意思?
    • @MikeFipps:它需要是一个全局变量/函数。在您的问题代码中,它是全局的,因为它没有嵌套在另一个函数中。但是,如果您确实将您的函数放在另一个函数中,则将其嵌套在局部变量范围内,因此内联 onclick 处理程序将无法访问它。
    • @不是我:谢谢你的解释。我知道 JavaScript 中的一些东西,但有些东西让我头疼,我正在学习。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2015-09-29
    • 2016-10-13
    相关资源
    最近更新 更多