默认值script在IE7中不工作

Default value script not working in IE7

本文关键字:工作 IE7 script 默认值      更新时间:2023-09-26

我使用以下默认值脚本,该脚本在我测试过的所有浏览器中工作,除了IE7,其中默认值没有显示'Name'字段(它应该显示'Name')。

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

EDIT:这个错误现在已经消失了,在'Name'之后删除逗号,但我仍然没有看到IE7中的默认值。你可以在这一页看到我的意思。

有人能帮忙吗?

谢谢,尼克

<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>

,它给出了错误:"Expected identifier, string or number"在'name[]'下:'name ',。我不知道如何修复这个错误。

IE阻塞了后面的逗号:

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

IIRC,完全符合ECMAScript标准。总之,只要去掉后面的逗号就行了

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

首先你说逗号打断了它,这是不正确的JSON语法。

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

第三,你需要调试这个来弄清楚,看看解析JSON($. parsejson()我想)。

我可以告诉你到底是什么错了,怎么做,但它比花一些时间练习调试javascript更值得在浏览器中打开控制台,并使用console.log(VARIABLE);在你的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');
            }
        });
    };