默认值脚本在 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 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Fancybox 2,带表单的 iframe,在 IE7 中不起作用
过滤器:progid:DXImageTransform.Microsoft.gradient 在 ie7 中不起作用