Autor Zpráva
jav
Profil *
zdravím,

mám HTML výstup a chci, aby uživatel do inputu mohl napsat libovolný text. Ten libovolný text by se automaticky vypsal všude tam, kde v kódu bude #kod#

tzn.

mám:

<a href="?subject=%kod%">A1</a> - kategorie - <a href="?c=1&subject=%kod%">A1</a>

a potom

<input type="text" name="editace" value="" onkeyup="...">

a teď bych potřeboval, aby to, co bude ve value inputu se automaticky přepisovalo do Všech řetězců ve výsledném HTML kódu, který splnuje regexp

subject=..."

díky, vůbec to nedokážu takto zkombinovat.
lionel messi
Profil
jav:
Bude potrebné použiť regulárne výrazy. Zhruba takto:

text.replace(pattern, '$1' + jmenoFormulare.jmenoPole.value);

Kde jmenoFormulare je názov formulára (obsah atribútu jemu príslušnému atribútu name) a jemnoPole je názov políčka uvedený taktiež v zodpovedajúcom atribúte name.



Zrejme ešte lepšie by to bolo takto:
<script>
function f()
{
  var vzor = /(subject=)[^"]/;
  var znacky = document.getElementsByTagName("a");
  for (var i = 0; i < znacky.length; i++)
  {
    znacky[i].href = znacky[i].href.replace(vzor, '$1' + this.value);
  }
}
</script>
<a href="?subject=%kod%" id="odkaz">A1</a> - kategorie - <a href="?c=1&subject=%kod%">A1</a>

<form>
<input type="text" name="editace" value="" onkeyup="f()">
</form>

Správna syntax viď Chamurappiho reakciu, upravené.
Chamurappi
Profil
Reaguji na lionela messiho:
Regulární výrazy jsou přímou součástí syntaxe JavaScriptu, píší se mezi /lomítka/, ne jako řetězce.
lionel messi
Profil
Chamurappi:
Ďakujem veľmi pekne za opravu, prikladám správne riešenie:

<script>
function f()
{
  var vzor = /(subject=)[^"]*/;
  var znacky = document.getElementsByTagName("a");
  for (var i = 0; i < znacky.length; i++)
  {
    znacky[i].href = znacky[i].href.replace(vzor, '$1' + formular.editace.value);
  }
}
</script>
<a href="?subject=%kod%" id="odkaz">A1</a> - kategorie - <a href="?c=1&subject=%kod%">A1</a>
 
<form name="formular">
<input type="text" name="editace" value="" onkeyup="f()">
</form>

Kód v [#2] po syntaktickej úprave začal vyhadzovať undefined (priznávam, že netuším prečo) a v regulári mi chýbala hviezdička.
1Pupik1989
Profil
lionel messi:
Kód v [#2] po syntaktickej úprave začal vyhadzovať undefined (priznávam, že netuším prečo) a v regulári mi chýbala hviezdička.

Protože v this není input, nýbrž objekt Window.

Při takovém regulárním výrazu by navíc nesmélo nic následovat za "subject".

function f(input){
  var pattern = /subject=[^&]+/;
  var links = document.getElementsByTagName("a");
  
  for (var a, i = 0, length = links.length; i < length; i++){
    link = links[i];
    link.href = link.href.replace(pattern, 'subject=' + input.value);
  }
};
jav
Profil *
díky pánové!

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: