Изменение метки на текстовое поле в JavaScript - PullRequest
2 голосов
/ 07 февраля 2012

Во-первых, я не очень хорошо знаю английский, но я постараюсь сделать его понятным, насколько это возможно

Итак, я сделал создание сетки, в которой столбец; два элемента управления надписью и текстовым полем ярлык установлен, чтобы быть видимым в то время как текстовое поле наоборот

вот код клиента моего 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, поэтому я создал атрибут на моей стороне сервера для передачи моей функции javascript Вот что я сделал

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 + "')")

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

  function validate(txtobj, lblobj) {

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

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

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

Ответы [ 2 ]

3 голосов
/ 07 февраля 2012

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

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 голосов
/ 05 апреля 2013

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

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