child-компонент растягивает parent' а (IE8)
У меня есть таблица из одного row в котором 3 ячейки;
в 3й ячейке есть input типа text; заполняю input типа text значением, которое больше чем область отображения (ширина значения больше ширины input' а); затем привожу все компоненты формы в состояние disabled; и тут проблема - input растягивается под размер своего значения и заодно растягивает таблицу! то-есть изначально заданное мной отношение для 3 ячеек 40%-20%-40% меняется в пользу проблемной ячейки... посмотрите пожалуйста видео с демонстрацией этой проблемы и подскажите чего делать: http://www.youtube.com/watch?v=yX9iw3PQ_eg |
Цитата:
|
Цитата:
<html> <HEAD> <meta charset="utf-8"> <title></title> <script type="text/javascript"> function toggleById() { toggleDisabled(document.getElementById("tableCell")); } function toggleDisabled(el) { try { el.disabled = !el.disabled ? true: false; } catch(err) { alert(el.nodeName + "\u0020" + err.description); } if (el.childNodes && el.childNodes.length > 0) { for (var x = 0; x < el.childNodes.length; x++) { toggleDisabled(el.childNodes[x]); } } } </script> </HEAD> <body> <table border="1" width="100%"> <tr> <td width="40%"> <input type="button" value="Toggle disable" onclick="toggleById();" /> </td> <td width="20%"> </td> <td width="40%"> <div id="tableCell"> <input type="text" style="width: 100%;" /> </div> </td> </tr> </table> </body> </html> |
Цитата:
catch(err) { alert(el.nodeName + "\u0020" + err.description); } Цитата:
|
Цитата:
Исключение мне ни о чём не говорит, поэтому и созданна эта тема. Я активно использую для layout элемент типа <table> потому что он более предсказуемый чем <div>, для меня по крайней мере. В полной версии страницы гораздо больше компонентов, поэтому кажется, что в примере есть избыточный код... Как избежать этот глюк с disable? |
Цитата:
Вот это у меня работает без проблем... <!DOCTYPE html> <html> <head> <!-- <script src="http://code.jquery.com/jquery-latest.js"></script> <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> function Off() { document.getElementById('test').disabled=true; } </script> </head> <body> <table border="1" width="100%"> <tr> <td width="40%"> <input type="button" value="Toggle disable" onclick="Off();" /> </td> <td width="20%"> </td> <td width="40%"> <div id="tableCell"> <input id='test' type="text" style="width: 100%;" /> </div> </td> </tr> </table> </body> </html> |
Цитата:
|
Цитата:
Цитата:
Или так и будем в "загадки" играть? :D |
Цитата:
Просто я считаю неправильным - в одном методе JS который ответственный за изменение состояния 10+ компонентов, 10+ раз вызывать getById для каждого компонента в отдельности с их собственными Id. Гораздо более изящно - рекурсивный проход по документу, что я и делаю. А IE8 падает на изменении свойства disabled. Скорее всего из-за падения и происходит этот дикий resize текстового поля. Вопрос - почему? |
Цитата:
Цитата:
Цитата:
Делай нормальные примеры - будет шанс получать нормальные ответы. А пока элемент один - вот и обращаются к нему как к одному. А не через такие выверты как у тебя... :D |
Часовой пояс GMT +3, время: 08:12. |