Autor Zpráva
davef6
Profil
mám tento skript

<script type="text/javascript">
var firstMail = true;
function addMail(mail)
{
var kam_pridat = 'email2';
if (firstMail == true)
{
document.getElementById(kam_pridat).value = mail;
firstMail = false;
}
else
{
document.getElementById(kam_pridat).value += "; " + mail;
}
}
</script>

který při zaškrtnutí checkboxu vypíše obsah zaškrtnutého checkboxu do textarey, jak udělat, když zrušim zaškrtnutí, aby se mi to z textarey také odstranilo? připomínám že checkboxů může být zaškrtnuto víc a já chci zbývající zaškrtnutá data zapsaná v textarea ponechat

takhle to dělá, že při zaškrtnutí i odškrtnutí checkboxu se do textarea zapíší data co chci zapsat jenom po zaškrtnutí

díky za odpovědi
venca12
Profil
Měl jsi sem dopsat i to jak, vypadá ten checkbox, pravděpodobně to bude vypadat nějak takhle: <input type="checkbox" onchange="addMail('nekdeNeco')">.

Já bych to udělal asi takhle: Nejdříve si vytvořím nějaké checkboxy
<input type="checkBox" id="prvni" value="karel@email.cz" />

<input type="checkBox" id="treti" value="franta@email.cz" />
<input type="checkBox" id="druhy" value="jarda@email.cz" />


Pak bych vytvoři javascript, kde bych si nejdříve přiřadil do nějaké proměnné seznam #ID-ček těch checkboxů, s tím, že bych to udělal jako dvourozměrné pole a použil bych zatím jenom první pozici druhého rozměru. Na další pozice se teprve dostane.
var checkboxy=[['prvni'], ['druhy'], ['treti']];
Teď bych na začátku skriptu projel všechny checkboxy a ke každému bych do události onchange přidal volání nějaké mojí funkce pro přidání a pro odstranění mailu, asi takhle:
for(var i=0;i<checkboxy.length;i++)

{
document.getElementById(checkboxy[i][0]).onchange = function()
{
if(this.checked)
addMail(this.id, this.value);
else
removeMail(this.id);
}
}
Mno a teď už jenom dopíšu funkce, které budou přidávat nebo odebírat mail z pole checkboxy a to pole potom vkládat do nějaké textarey.
function addMail(id, value)

{
for(var i=0;i<checkboxy.length;i++)
{
if(checkboxy[i][0] == id)
checkboxy[i][1] = value;
}

fillTextarea();
}

function removeMail(id)
{
for(var i=0;i<checkboxy.length;i++)
{
if(checkboxy[i][0] == id)
checkboxy[i][1] = '';
}

fillTextarea();
}

function fillTextarea()
{
var kamPridat = documentGetElementById('email2');
kamPridat.value = '';

for(var i=0;i<checkboxy.length;i++)
{
if(checkboxy[i][1])
kamPridat.value += checkboxy[i][1];
}
}
Tohle řešení má ale jeden zásadní problém a to ten, že přidané e-maily ti nebudou přiskakovat nakonec, ale v pořadí checkboxů v poli. Sofistikovanější řešení si vyžádá víc skriptování.

Celý skript by mohl vypadat nějak takhle (netestováno):
<input type="checkBox" id="prvni" value="karel@email.cz" />

<input type="checkBox" id="treti" value="franta@email.cz" />
<input type="checkBox" id="druhy" value="jarda@email.cz" />

<script type="text/javascript">

var checkboxy=[['prvni'], ['druhy'], ['treti']];

for(var i=0;i<checkboxy.length;i++)
{
document.getElementById(checkboxy[i][0]).onchange = function()
{
if(this.checked)
addMail(this.id, this.value);
else
removeMail(this.id);
}
}

function addMail(id, value)
{
for(var i=0;i<checkboxy.length;i++)
{
if(checkboxy[i][0] == id)
checkboxy[i][1] = value;
}

fillTextarea();
}

function removeMail(id)
{
for(var i=0;i<checkboxy.length;i++)
{
if(checkboxy[i][0] == id)
checkboxy[i][1] = '';
}

fillTextarea();
}

function fillTextarea()
{
var kamPridat = documentGetElementById('email2');
kamPridat.value = '';

for(var i=0;i<checkboxy.length;i++)
{
if(checkboxy[i][1])
kamPridat.value += checkboxy[i][1];
}
}

</script>
peta
Profil
davef6
jestlize chces odstranit text z textu, pak k tomu slouzi bud regularni vyrazy
http://www.volny.cz/peter.mlich/www.htm#mssub19
nebo funkce indexof
http://www.volny.cz/peter.mlich/www.htm#msub8

jakpsatweb - javascript
jakpsatweb - javascript - priklady - regularni vyrazy
(moc tady toho neni, proto ty odkazy na literaturu)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: