我的页面中有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>
答案 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更改后,它可以正常工作。感谢所有人的迅速回复。 干杯