【问题标题】:Default value script not working in IE7默认值脚本在 IE7 中不起作用
【发布时间】:2011-12-17 20:44:19
【问题描述】:

我正在使用以下默认值脚本,该脚本可在我测试过的所有浏览器中运行,IE7 除外,其中“名称”字段未显示默认值(它应该显示“名称”)。

我在 IETester 中运行了该页面,它在'name[]': 'Name', 下的}; 行上给出了错误:“预期的标识符、字符串或数字”。我不知道如何解决这个错误。

编辑: 在删除'Name' 之后的逗号后,此错误现已消失,但我仍然没有在 IE7 中看到默认值。你可以在this page 上看到我的意思。

有人可以帮忙吗?

谢谢,

尼克

<script>
$(function() {
    var defaults = {
        'name[]': 'Name',
    };

    // separating set and remove
    // note that you could add "defaults" as an arg if you had different
    // defaults for different fieldsets
    var setDefaults = function(inputElements) {
        $(inputElements).each(function() {
            var d = defaults[this.name];
            if (d) {
                // set with jQuery
                // we don't need the data - just check on the class
                $(this).val(d)
                    .addClass('default_value');
            }
        });
    };

    var removeDefaults = function(inputElements) {
        $(inputElements).each(function() {
           if ($(this).hasClass('default_value')) {
                $(this).val('')
                   .removeClass('default_value');
           }
        });
    };

    setDefaults(jQuery('form[name=booking] input'));

    // Toggles 
    $('form[name=booking]').delegate('input', {
        'focus': function() {
            removeDefaults($(this));
        },
        'blur': function() {
            // switch to using .val() for consistency
            if (!$(this).val()) setDefaults(this);
        }
    });
 }); 
 </script>

【问题讨论】:

  • 这是简单的调试;听说过alert()?坚持其中的一些会告诉你问题出在哪里。
  • @Matt 不,我没听说过 alert()。不过,我只是在 IETester 中运行了该页面,它给出了错误:“预期的标识符、字符串或数字”在 }; 下的 'name[]': 'Name', 下。我不知道如何解决这个错误。

标签: javascript jquery internet-explorer default-value


【解决方案1】:

它给出了错误:“预期的标识符、字符串或数字”在 } 行上;在“名称[]”下:“名称”,。我不知道如何解决这个错误。

IE 在此处被尾随逗号阻塞:

var defaults = {
        'name[]': 'Name',
    };

IIRC,完全符合 ECMAScript 标准。无论如何,只需删除结尾的逗号即可。

【讨论】:

  • 谢谢,现在 IE7 中的错误已经消失,但我仍然没有在名称文本框中看到默认值“名称”。如果您在 IE7 中访问 this page,您就会明白我的意思。在所有其他浏览器上都会显示。
【解决方案2】:

(我正在回答你的另一个问题,哈哈)

首先你说逗号把它弄坏了,那是不正确的 JSON 语法。

其次,不支持 IE 8 及以下版本(我很想说根本不支持 IE,因为它很烂,但显然大多数互联网仍在使用它)

第三,你需要调试它来解决这个问题,看看 Parsing JSON ($.parseJSON() 我认为)。

我可以准确地告诉你哪里出了问题以及怎么做,但是花一些时间通过在浏览器中打开控制台并使用 console.log(VARIABLE); 来练习调试 javascript 是非常值得的。在你的 JS 中。或者在不同的时间使用 alert(VARIABLE)。

例如

var setDefaults = function(inputElements) {
        $(inputElements).each(function() {
            var d = defaults[this.name];
            alert(d);
            if (d) {
                // set with jQuery
                // we don't need the data - just check on the class
                $(this).val(d)
                    .addClass('default_value');
            }
        });
    };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多