Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получить ClientID с помощью JavaScript 
V
    Опции темы
hestia
Дата 8.10.2008, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 9.8.2007
Где: Germany

Репутация: нет
Всего: нет



Доброго всем времени суток! У меня такая проблема. Мне необходимо получить ClientID от TextBox, который находиться в GridView и передать это ID в javascript-функцию. Как это сделать?  smile 

Код

 <asp:GridView ID="GridView1" OnDataBound="textErsetzen" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1">
          <Columns>
            <asp:BoundField DataField="appID" HeaderText="appID" SortExpression="appID" />
            <asp:TemplateField HeaderText="msg" SortExpression="msg">
              <ItemTemplate>
                <asp:TextBox ID="TextBoxMSG" Width="100%" TextMode="MultiLine" onkeyup="javascriptfunktion();"
                  onkeypress="taste(this.form.User.value);"  runat="server" Text='<%# Bind("msg") %>'></asp:TextBox>
              </ItemTemplate>
            </asp:TemplateField>
          </Columns>
        </asp:GridView>



Если я передаю ID вручную, то функция работает, но я не знаю, как мне сделать это динамически.
Код

function taste(e) {
   var id = document.getElementById("ctl00_ContentPlaceHolder1_GridView1_ctl02_TextBoxMSG").value;   
   ...
}


если я говорю, то функция не работает, т.к. это элемент не известен. Как я могу получить ID от  TextBox?
Код

 var id = document.getElementById("TextBoxMSG").value; 


Заранее всех благодарю за ответы!

Добавлено через 8 минут и 35 секунд
и сразу же сдел. вопрос к этому примеру. проблема в том. что все прекрасно заменяется, только вот в конце сообщения добавляется дополнительно "x". в чем может быть ошибка? 
Код

var geheim = "x"  //Geheimes Zeichen
function taste(e) {

   var id = document.getElementById("ctl00_ContentPlaceHolder1_GridView1_ctl02_TextBoxMSG").value;
      
   var zeichen = String.fromCharCode(e.which);
   if (zeichen == geheim) {
      //определение позиции символа в сообщении
      var pos = doGetCaretPosition(document.getElementById("ctl00_ContentPlaceHolder1_GridView1_ctl02_TextBoxMSG"));
      //сам символ
      var buchstabe = id.charAt(pos);
      //замена символа буквой "х"
      var result = id.replace(buchstabe, geheim );
      document.getElementById("ctl00_ContentPlaceHolder1_GridView1_ctl02_TextBoxMSG").value = result;
   } else {
     return false;
   }   
      return (document.getElementById("ctl00_ContentPlaceHolder1_GridView1_ctl02_TextBoxMSG").value);
}

// Считывание позиции символа в стринге
   function doGetCaretPosition (oField) {
     var iCaretPos = 0;
     if (document.selection) { 
       oField.focus ();
       var oSel = document.selection.createRange ();
       oSel.moveStart ('character', -oField.value.length);
       iCaretPos = oSel.text.length;
       //alert (iCaretPos );
     }
     else if (oField.selectionStart || oField.selectionStart == '0')
       iCaretPos = oField.selectionStart;
       //alert (iCaretPos );
     return (iCaretPos);
   }
document.captureEvents(Event.KEYPRESS);
document.onkeypress = taste;


Текст: "eine Testnachricht"
Полученный результат: "xxxx Testnachrichtxxxx"

что это может быть? 
Заранее всех благодарю 


PM MAIL   Вверх
hestia
Дата 9.10.2008, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 9.8.2007
Где: Germany

Репутация: нет
Всего: нет



есть тут кто-нибудь? или никто не знает ответа на мой вопрос
PM MAIL   Вверх
hestia
Дата 10.10.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 9.8.2007
Где: Germany

Репутация: нет
Всего: нет



спасибо всем тем, кто хотя бы просмотрел эту тему. Жаль, что ответов не получила. Вот мое решение. Задача была, с помощью "х" заменять буквы, конкретного сообщения, для того, чтобы они не были позднее отражены на экране (например, слова политического или сексуального содержания). это должен решать оператор, который обрабатывает сообщение. 

Код

  <script language="javascript" type="text/javascript">
function handleKeyPress(event, sender) {
   var event = event ? event : window.event;
   var keyCode = event.which ? event.which : event.keyCode;
    // считывает клавишу
   if (keyCode == 120) {
     // если она равна 120 (аски-код "х"), то считывается позиция курсора
      var pos = getCursorPosition(sender);
     // буква заменяется и выдается на экран
      var newText = sender.value.substr(0, pos) + "x" + sender.value.substr(pos + 1);
      sender.value = newText;
     // необходимо для того, чтобы курсор оставался на месте и не пригал в конец сообщения 
      setCursorPosition(sender, pos + 1);
   }
   
   try {
    if (event.cancelBubble) {
        event.cancelBubble = true;
    }
    if (event.preventDefault) {
        event.preventDefault();
    }
    if (event.stopPropagation) {    
        event.stopPropagation();
    }
   } catch (ex) {
       return false;
   }
   return false;    
  return true;
}  

   // считываение позиции курсора
   function getCursorPosition(textarea) {
    var txt = textarea.value;
    var len = txt.length;
    var erg = txt.split("\n");
    var pos = -1;
    if(textarea.selectionStart || textarea.selectionStart == '0') { // FOR MOZILLA
      pos = textarea.selectionStart;
    } else if(document.selection) { // FOR MSIE
      range_sel = document.selection.createRange();
      range_obj = textarea.createTextRange();
      range_obj.moveToBookmark(range_sel.getBookmark());
      range_obj.moveEnd('character',textarea.value.length);
      pos = len - range_obj.text.length;
    } 
    return pos;
   }
   
   // садит курсор на определенную позицию
   function setCursorPosition(textarea, pos) {
      if (document.selection) {  // FOR MSIE
        textarea.focus();
        var textSelection = textarea.createTextRange();
        textSelection.move('character', pos);
        textSelection.select();
      } else if (textarea.selectionStart) {  // FOR MOZILLA
        textarea.selectionStart = pos;
        textarea.selectionEnd = pos;
      }
   }
  </script>


вызов фунции в TextBox  
Код

<asp:GridView ID="GridView1" Width="100%" runat="server" AutoGenerateColumns="False"
          DataSourceID="ObjectDataSource1">
          <Columns>
            <asp:TemplateField HeaderText="msg" SortExpression="msg">
              <ItemTemplate>
                <asp:TextBox  ID="TextBoxMSG" Width="100%" TextMode="MultiLine"
                  onkeypress="return handleKeyPress(event, this);" runat="server" Text='<%# Bind("msg") %>'></asp:TextBox>
              </ItemTemplate>
            </asp:TemplateField>
                     </Columns>
        </asp:GridView>


Это сообщение отредактировал(а) hestia - 13.10.2008, 15:28
PM MAIL   Вверх
wotker
Дата 10.10.2008, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 18.7.2006
Где: Ростов-на-Дону

Репутация: 1
Всего: 5



Добрый день.
На сколько я понял, вам нужно использовать блок <%= %>
К примеру:
Код

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<script  language="javascript">
    alert('<%= this.TextBox1.ClientID %>');
</script>


Здесь более подробно: http://forum.vingrad.ru/forum/topic-219046.html
--------------------
ICQ ::            347306684e-mail ::         wotker[at]rambler[dot]ru 
PM MAIL ICQ   Вверх
hestia
Дата 13.10.2008, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 9.8.2007
Где: Germany

Репутация: нет
Всего: нет



Цитата(wotker @ 10.10.2008,  17:04)
Добрый день.
На сколько я понял, вам нужно использовать блок <%= %>
К примеру:
Код

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<script  language="javascript">
    alert('<%= this.TextBox1.ClientID %>');
</script>


Здесь более подробно: http://forum.vingrad.ru/forum/topic-219046.html

доброго времени суток!
таким образом я уже пробывала, не работает, потому как мой textbox находиться в GridView и на прямую я не могу получить ClientID. То решения, которое я выставила, работает полностью. через sender я могу получить ClientID без проблем. в любом случае благодарю за ответ   smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.