2010-07-14 54 views
2

我有一个表单,我想根据输入的文本在文本字段中显示div。我使用的脚本在我的最新版本的chrome上工作得很好,但它在IE或我的任何成员browswers上都不起作用。他们碰到了什么是错误的脚本?在文本条目中显示div

<script> 
$('document').ready(function(){ 
$('#gname').change(function() { 
($(this).val() == "NBA 2k10") ? 
$('#number').slideDown('fast') : $('#number').hide(); 
}) 
}); 
</script> 
+1

可能与IE如何触发更改事件有关。 – Tesserex 2010-07-14 02:00:10

+0

你的html中有DOCTYPE声明吗?如果!DOCTYPE丢失,IE将不会正确解释代码。 – Enrique 2010-07-14 02:02:37

+0

doc type is there,我找不到这个 – 2010-07-14 02:07:16

回答

2

$("document")是不是在其他浏览器的有效选择,你需要$(document),这样的整体:

$(document).ready(function(){ 
    $('#gname').keyup(function() { //probably want keyup instead of change here 
    if ($(this).val() == "NBA 2k10") 
     $('#number').slideDown('fast') 
    else 
     $('#number').hide(); 
    }); 
}); 

You can test it here

$(document).ready(function(){也可以是$(function(){$("document")不起作用,因为它正在寻找<document>元素,该元素不存在。

if/else变化只是为了使它有点更清洁的整体,它有点偏好,但总体来讲你的条件语句应该不会有副作用,这不是他们的本意。你可以这样使用它们,但最好是明确的,至少在我看来。

+0

感谢您的响应兄弟,但这不起作用 – 2010-07-14 02:05:01

+1

@John - 我添加了一个演示,以显示它的行动,你可能*希望*是'keyup'事件,而不是'change'(它不会发射直到你离开文本框)。这可能是你目前的问题,当你认为它发生'change'事件不会触发:) – 2010-07-14 02:10:12

+0

Keyup,工作。美丽。让我知道你的Goodiiz.com会员ID是什么,我会寄给你3个goodiiz芯片帮助我。 – 2010-07-14 02:13:30

0

只有在输入失去焦点后,才可能在IE中触发。如果您想在对输入焦点丢失之前检测文本更改(跨浏览器),请尝试按键或按键。

$(document).ready(function(){ 
    $('#gname').keypress(function() { 
    if ($(this).val() == "NBA 2k10") 
     $('#number').slideDown('fast') 
    else 
     $('#number').hide(); 
    }); 
});