【问题标题】:HTML: Input type button - value equivalent to defaultValueHTML:输入类型按钮 - 相当于 defaultValue 的值
【发布时间】:2013-03-14 03:34:13
【问题描述】:

我需要使用 type="button" 更改输入的值。另一个函数通过将“value”属性与“defaultValue”属性进行比较来检查它的值是否已更改(但这不是重点……)。除了 type="button" 的输入之外,这对其他所有内容都适用。由于某种原因,浏览器也会更改默认值。但为什么呢?

注意:没有 jQuery!

这是一个简化的测试代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <script type="text/javascript">
            function d(input)
            {
                alert("value: "+ input.value +"\ndefaultValue: "+ input.defaultValue);
            }
        </script>
    </head>
<body>
    <input type="button" value="0" onclick="d(this); this.value=1; d(this);" />
</body>
</html>

【问题讨论】:

    标签: javascript button input


    【解决方案1】:

    好问题!它也不适用于 type="reset"。
    那是因为它们没有指定数据类型,它们只是按钮。
    您可以保存按钮的第一个值,然后使用它。我给你写了一个例子:

    <!DOCTYPE HTML>
    <html>
        <head></head>
        <body>
            <input id="test" type="button" value="Old text" onclick="d(this); this.value='Hello, new text';"/>
            <script type="text/javascript">
                var defaultValueOfInput = document.getElementById("test").value;
                function d(button){
                    alert("Value: "+button.value+"\ndefaultValue: "+defaultValueOfInput);
                }
            </script>
        </body>
    </html>
    

    编辑:更新了我的代码。

    【讨论】:

    • 您在更改值之前调用了该函数。如果把它放在后面,它会起作用。但这不是我想知道的。另外,没有指定数据类型是什么意思?他们没有“类型”和“价值”属性吗?也许是因为这种组件通常无法通过浏览器进行更改?但是在某些情况下,需要使用 type="button" 更改输入的值,恕我直言。尤其是在 AJAX 应用程序中......糟糕的是,我无法像您的示例那样将旧值存储在某个地方。为此,产品非常复杂。
    【解决方案2】:

    将d的定义直接放到全局作用域:http://jsfiddle.net/UQTY2/34/

       window.d = function (input) {
           alert("value: " + input.value + "\ndefaultValue: " + input.defaultValue);
       }
    

    【讨论】:

    • 嗯...这行不通。相同的行为。有什么区别?
    • 不,它没有。在 Firefox、Internet Explorer、Opera、Chrome、Safari 中测试。我的示例代码有什么不同,为什么它应该在全局范围内工作,而不是我把它放在哪里(把它放在头节点之外是我的错误,抱歉,但这不会改变我的行为) ?编辑:嗯,这取决于你的意思是“工作”。它完全符合我的代码的功能。它首先显示“value: 0 defaultValue: 0”,然后显示“value: 1 defaultValue: 1”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    相关资源
    最近更新 更多