默认值脚本在 IE7 中不起作用

Posted

技术标签:

【中文标题】默认值脚本在 IE7 中不起作用【英文标题】:Default value script not working in 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', 下。我不知道如何解决这个错误。 【参考方案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');
            
        );
    ;

【讨论】:

以上是关于默认值脚本在 IE7 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

文本缩进在 ie7 中不起作用

:hover CSS 的伪类在 IE7 中不起作用

Fancybox 2,带表单的 iframe,在 IE7 中不起作用

过滤器:progid:DXImageTransform.Microsoft.gradient 在 ie7 中不起作用

此用于切换 div 的 JQuery 代码在 IE7 中不起作用,但在其他浏览器中起作用

jquery图像选择器在IE7中不起作用