2012-02-07 4 views
2

Прежде всего, я не очень хорошо на английском языке, но Ill попробовать сделать его понятным как можноИзменение метки для текстового поля на Javascript

Так что я сделал было создать GridView, в котором колонна; два управляет и метки текстового поля установлено, чтобы быть видимым в то время как текстовое поле все наоборот

здесь клиент-код моего GridView

<asp:Image ID="img" onclick="javascript:Toggle(this);" runat="server" ImageUrl="~/Images/minus.gif" 
            ToolTip="Collapse" Width="7px" Height="7px" ImageAlign="AbsMiddle" /></a> 
          <asp:Label ID="lbllastname" Height="15px" Width="180px" runat="server" Text='<%# Eval("CourseCatName")%>'></asp:Label> 
          <asp:TextBox ID="txtCourseCategory" AutoPostBack="true" runat="server" Text='<%# Eval("CourseCatName")%>' 
           Font-Size="XX-Small" Font-Names="Verdana" Style="display: none" OnTextChanged="txtCourseCategory_TextChanged" 
           Height="16px" Width="207px"></asp:TextBox><br /> 

Я знаю, что трудно найти управление внутри GridView так, что я сделал это создать atrribute на моей стороне сервера, чтобы передать на моем яваскрипте функции Вот что я сделал

Dim txttry As TextBox = DirectCast(e.Row.FindControl("txtCourseCategory"), TextBox) 
     Dim labeltry As Label = DirectCast(e.Row.FindControl("lbllastname"), Label) 
     labeltry.Attributes.Add("onclick", "javascript:return validate('" + txttry.ClientID + "','" + labeltry.ClientID + "')") 

И на моем JavaScrip т ив создал функцию для вызова элементов управления

function validate(txtobj, lblobj) { 

     document.getElementById(lblobj).style.display = 'none'; 
     document.getElementById(txtobj).style.display = 'block'; 
    } 

Так что код работает, и я думаю, что это почти сделано, но когда я запускаю свою программу и нажмите на этикетке; ярлык скрывается, но текстовое поле ниже, как есть <br/> между Я снова проверяю коды, но не нашел ничего, что могло бы сделать текстовое поле ниже. Сэр/Мадам, как вы думаете, проблема, или я должен добавить для нее CSS? Или мой код - огромная проблема? Я открыт для предложения, будь он плохим или хорошим. Кстати, я действительно новичок в javascript

Спасибо за ваше время и силы, пытаясь прочитать мою проблему.

ответ

3

Попробуйте изменить следующую строку:

document.getElementById(txtobj).style.display = 'block'; 

Чтобы быть:

document.getElementById(txtobj).style.display = ''; 

// OR 

document.getElementById(txtobj).style.display = 'inline'; 

Если вы установите ваш элемент быть block элемент будет отображаться на следующей строке, потому что это то, что делают элементы блока , Если вы установите для свойства display пустую строку, оно должно сделать его видимым снова, установив его по умолчанию для display для конкретного типа элемента, который в случае входного элемента должен быть inline. Если это не сработает, вы можете явно установить его на inline.

Более подробную информацию о display можно найти здесь: http://www.quirksmode.org/css/display.html - в комплекте с фотографиями и даже демонстрацией изменения настроек на лету в нижней части страницы.

+0

Спасибо, сэр, что вы ангел.^_^спасибо также за ваше описание. Сейчас он работает нормально. – Janwel

0

Вы также можете сделать это, не используя javascript. Для этого вам нужно будет использовать 2 панели. в одной панели держите свою метку, а на другой панели держите текстовое поле. теперь держите панель с невидимым текстовым полем, установив ее видимое свойство false. теперь в кнопках события click получают текст метки и сохраняют его в строковой переменной и изменяют видимое свойство на false для панели, содержащей метку. затем измените свойство visible на true на панель, содержащую текстовое поле, и установите свойство text со строкой в ​​переменной.

Смежные вопросы