Братцы, такая вот штука:
Проверяю javascript'ом правильность ввода значения времени по шаблону, передавая из custom controla ASP значение из текстового поля, также передаю функции javascript'a ID Labela, в которое хочу записать сообщение об ошибке. После проверки и нахождения ошибки вызвается такая функция javascript:
function WriteMistake(elem, template, labelID)
{
var obj=document.getElementById(labelID)
obj.innerHTML="<b>Вводимое значение должно быть ввида: " + template+"</b>";
obj.style.display='inline';
}
В ASP этому лейблу добавлены такие атрибуты стиля
lblErrorMessage.Style.Add("display", "none");
lblErrorMessage.Style.Add("position", "relative");
lblErrorMessage.Style.Add("overflow", "scroll");
lblErrorMessage.Style.Add("top", "-5px");
lblErrorMessage.Style.Add("left", "10%");
lblErrorMessage.ForeColor = Color.Red;
Так вот после клиентской проверки перед текстовым полем, в которое вводится время, и перед которым ничего нет вводится пару пустых строк. Откуда эти строки? Как их побороть?
PS Стандартная проверка времени в ASP отсутствует, только даты.
После длительной проверки выяснилось, что это строки, добавляются VIEWSTATE, которое имеет такой код HTML <input type="hidden" name="__VIEWSTATE" value="..." />. И, очевидно, при клиентской перерисовке забивает место под это поле, хотя и имеет итп hidden. После отправки на сервер отображается без лишней первой строки. Есть ли способ избежать прорисовки этой ненужной строки
Здравствуйте, <Аноним>, Вы писали:
А>После длительной проверки выяснилось, что это строки, добавляются VIEWSTATE, которое имеет такой код HTML <input type="hidden" name="__VIEWSTATE" value="..." />. И, очевидно, при клиентской перерисовке забивает место под это поле, хотя и имеет итп hidden. После отправки на сервер отображается без лишней первой строки. Есть ли способ избежать прорисовки этой ненужной строки
А style="display: none;" не поможет?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Если задать у всех валидаторов Display="dynamic", то место под них резервироваться не будет:
<asp:RequiredFieldValidator ControlToValidate="..." runat="server" Display="dynamic" />
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Здравствуйте, mo3r, Вы писали:
M>Если задать у всех валидаторов Display="dynamic", то место под них резервироваться не будет:
M><asp:RequiredFieldValidator ControlToValidate="..." runat="server" Display="dynamic" />
Пустое место вставляет ViewState у котороого type='hidden'. И это поле вставляется самим ASP, пожтому я не могу задать ему свойтсво display='none'.
Вот аналог html-страницы:
</HEAD>
<BODY>
<form>
<input type="hidden" name="__VIEWSTATE" value="dDwtMjAzMzY1OTQyODt0PDtsPGk8MT47PjtsPHQ8O2w8aTwxPjtpPDM+Oz47bDx0PDtsPGk8MD47PjtsPHQ8O2w8aTw0Pjs+O2w8dDxwPHA8bDxUZXh0Oz47bDxcZTs+Pjs+Ozs+Oz4+Oz4+O3Q8O2w8aTwwPjs+O2w8dDw7bDxpPDU+Oz47bDx0PHA8cDxsPFRleHQ7PjtsPFxlOz4+Oz47Oz47Pj47Pj47Pj47Pj47bDxVbml2ZXJzYWxJbnB1dDE7VW5pdmVyc2FsSW5wdXQyOz4+wB1VL3Hmk9j8KxggqnFSWA1MxIs=" />
<P>
<input type='text' id='myinput' onchange=insertElement()></input><br>
<SPAN id='mySpan'>Поле перед которым нужно вставить еще поле</SPAN>
</P>
<form>
<SCRIPT>
function insertElement()
{
var nod=document.createElement("SPAN");
var obj=document.getElementById('mySpan');
var parent=obj.parentNode;
parent.insertBefore(nod, obj);
nod.innerText="Orange";
}
</SCRIPT>
</BODY>
Пустое поле вставляется...

Как это избежать?
Вроде бы все решилось способом регистрации javascript.
Раньше регистрировалась функция проверки на правильнсоть ввода таки способом:Page.RegisterClientScriptBlock
и после этого вставлялась пустая строка.
Попробовал регистрировать так: Page.RegisterStartupScript и пустая строка не добавляется...
Здравствуйте, дядя Степа, Вы писали:
ДС>Пустое место вставляет ViewState у котороого type='hidden'. И это поле вставляется самим ASP, пожтому я не могу задать ему свойтсво display='none'.
А если сделать это на клиенте
Я в скриптах не силен, может, что-то вроде этого:
for(var inp in document.all)
if(inp.type=="hidden")
inp.style.display="none";
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>