ID controlu předávané do Javascriptu   zodpovězená otázka

ASP.NET WebForms, JavaScript

Zdravím, chci udělat do diskuzního fora vkladani značek, podle kterých pak aplikace pozná jestli se jedná o tučný text, kurzivu nebo podtržení (podobně jako to je tady). Vygooglil jsem i pěkné javascriptové funkce, ale zasekl jsem se na tom že nevím jak je volat (resp. nevím jak jim předat v parametru onen textBox).

Dejme tomu ze mám JS funkci:

function bold(textbox) 
{
    //zde je nějaký kód na manipulaci s textem v textboxu zaslaným v parametru
}

A dále mám ve stránce třeba textBox s ID="topicText" a control kterým chci spustit ten javascript

<a id="aBold" ><img class="imgBtnText" id="imgBold" src="App_Themes/Default/Buttons/bold.png" onclick="bold(txtTopic)" title="Tučně"/></a>
<br />
<asp:TextBox ID="txtTopic" runat="server" Width="380px" Text='<%# Bind("postText") %>' TextMode="MultiLine" Height="120px" ViewStateMode="Enabled" />

pokud to napíšu takhle, tak mi to při události onclick napíše: Microsoft JScript - chyba při běhu programu: 'txtTopic' není definováno.

Jdu na to blbě? Myslel jsem že stačí předat ID prvku ale očividně to takto nefunguje.

Pak jsem ještě narazil na konstrukci:

onclick="red(document.getElementById('<%=txtTopic.ClientID %>');)"

bohužel s podobným výsledkem. Jak tedy správně předat v parametrem cílový objekt?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

a co zkusit napsat jen:

onclick="bold(this)"

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To nefunguje, protože jestli to chápu dobře tak this je objekt ze kterého JS volám. A to je v tomto případě img, jenže já potřebuju manipulovat s textboxem který je pod ním.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano,omlouvám se..toho jsem si všiml až později..potom bych to zkusil cca takto:

document.getElementById(‘ctl00_ContentPlaceHolder1_ txtTopic’)

Samozřejmě,že očíslování placeholderu může být jiné..ale mělo by to takto obecně fungovat..ASP.net vytváří tyto IDčka,aby byly vždy v rámci stránky unikátní - proto ta předpodna ctl***

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To je hodně blbé řešení, protože cokoliv ve stránce změníte, ID se může přegenerovat a přestane to fungovat.

ID zjistíte pomocí vlastnosti ClientID dané komponenty. Anebo pokud máte ASP.NET 4, nastavte komponentě ClientIDMode="Static" a pak bude mít ID ve stránce stejné jako její normální ID na serveru, třeba TextBox1. Jen bacha, aby takových komponent se stejným ID nebylo ve stránce víc.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Úspěšně vyřešeno pomocí ClientIDMode="Static"

Děkuji:)

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback