почему IE8 не обновляет текстовое поле сразу? (Jquery) - PullRequest
0 голосов
/ 15 апреля 2010

У меня есть 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 голосов
/ 15 апреля 2010

Убедитесь, что ваш IE работает в режиме браузера IE8 и режиме документа IE8 (проверьте в Tools.Developer Tools) Иногда он работает в режиме совместимости или в режиме совместимости, что может вызвать проблемы.

Это то, что я делаю, чтобы убедиться, что IE8 отображает мой HTML в режиме IE8.

<!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-Compatible.

0 голосов
/ 15 апреля 2010

Только что нашел виновника с помощью Jsbin. Это ошибки JQuery 1.3.2, которые вызывают эту проблему. После изменения с использованием 1.4.0, он работает как я хотел. Спасибо всем за оперативные ответы. Приветствия

0 голосов
/ 15 апреля 2010

Вы пробовали это

$('#poster_other').val(''); 

до вызова:

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

Может быть, вы можете настроить страницу http://www.jsbin.com с нерабочим кодом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...