IE8为什么不马上刷新文本框?(Jquery)

时间:2010-04-15 01:19:56

标签: jquery internet-explorer-8

我的页面中有3个单选按钮和一个文本框。这3个无线电控件代表相应的选择,其中第三个控件启用默认禁用的文本框。如果用户在单击第三个后点击前两个中的任何一个,则文本框将被清空(如果用户输入任何)并再次禁用。问题是,在IE中,文本框不会被清空,直到我再次在所述文本框上再次单击。我已经使用了jquery val方法以及attr但似乎没有任何工作。你可以看到我的代码如下。完全相同的代码在Mozilla中运行得很好。我不确定为什么IE有问题。

        m.bind_eventform = function(){
     $('input[name=poster]').change(function(){
      if($('input[name=poster]:checked').val()==2) $('#poster_other').removeAttr('disabled');
      else if(!($('#poster_other').is(':disabled'))) 
      {
       $('#poster_other').attr('disabled','disabled');
       $('#poster_other').attr('value',''); //this one doesn't work
       $('#poster_other').val(''); //as well as this one
      }
     });
    };

$(document).ready(m.bind_eventform);

编辑 - 根据请求添加标记

<div class="formwrapper">
                    <div style="float:left"><input type="radio" name="poster" value="0" checked="checked" style="float:left;">
                        <span style="float:left;margin:0 0 0 5px">owner</span></div>
                    <div style="float:left;margin-left: 80px"><input type="radio" name="poster" value="1" style="float:left;">
                        <span style="float:left;margin:0 0 0 5px">agent</span></div>
                    <div style="float:right;margin-left:40px"><input type="radio" name="poster" value="2"  style="float:left;">
                        <span style="float:left;margin:0 0 0 5px">others</span>
                        <input type="text" id="poster_other" size="40" style="float:left;margin:0 0 0 5px" disabled="disabled"></div>
                    <div style="clear:both"></div>
                </div>

3 个答案:

答案 0 :(得分:0)

你试过这个吗?

$('#poster_other').val(''); 
在致电之前

$('#poster_other').attr('disabled','disabled');

也许您可以使用非工作代码设置http://www.jsbin.com页面

答案 1 :(得分:0)

确保您的IE在IE8浏览器模式和IE8文档模式下运行(Check in Tools.Developer Tools)。有时它在Quirks或兼容模式下运行,这可能会导致问题。

我这样做是为了确保IE8在IE8模式下呈现我的html。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html>
<head>      
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=8" />

重要的部分是X-UA兼容元标记。

答案 2 :(得分:0)

刚刚在Jsbin的帮助下找到了罪魁祸首。这是导致这个问题的jquery 1.3.2错误。使用1.4.0更改后,它可以正常工作。感谢所有人的迅速回复。 干杯