Dobrý den,
mám dva selecty a potřebuji naplnit druhý - to se daří, ale současně potřebuji plnit pole to mně nejde viz příklad.
Jsem v Jquery absolutní začátečník. POtřebuji položky z pole i odstraňovat :-).
Díky za radu
<h1>Pokyny</h1>
<select multiple="multiple" class="options" id="textarea">
<option value="item1">Item 1</option>
<option value="item2">Item 2</option>
<option value="item3">Item 3</option>
<option value="item4">Item 4</option>
<option value="item5">Item 5</option>
</select>
<button id="copy">Copy</button>
<button id="remove">Remove</button>
<select id="textarea2" name="cil" multiple class="remove">
</select>
<script>
var list = [];
$(function(){
$("#copy").on("click", function(){
$(".options option:selected").each(function(){
$("#textarea2").append('<option>'+$(this).text()+'</option>');
$(list.push($(this).text()));
$('option:selected', "#textarea").remove();
});
});
$("#remove").on("click", function(){
$(".remove option:selected").each(function(){
$("#textarea").append('<option>'+$(this).text()+'</option>');
$('option:selected', "#textarea2").remove();
});
});
});
document.write($list);
</script>
Fórum › JavaScript, AJAX, jQuery
Jquery a pole
$(list.push($(this).text()));
Nevim, jestli uplne chapu tvuj problem. Mozna hledas splice. Cyklem najdes, kde ten prvek v poli je a pak vsechny nalezene pozice odstranis smerem ze zadu
http://www.tvorba-webu.cz/…ipt/pole.php
pole.splice(0,1);
Nebo proste u odstranene muzes vyplnit hodnotu na null nebo false a pak v cyklu pro vypsani ignorovat vse, kde je hodnota null
x = [1,2,3,4,5,'A','B','C']; //x[0]=1; x[1]=2; x[2]=3; x[3]=4; x[4]=5; x[5]='A'; x[6]='C'; x[7]='D';
x[3] = null; //x = [1,2,3,null,5,'A','B','C'];
str = '';
for (i=0;i<x.length;++i) {if (x[i]!=null) {str+=x[i]+', ';} // 1,2,3,5,'A','B','C'
alert(str);
jinak bys musel cele pole zkratka ulozit do nove promenne.
Nebo, mozna v pripade selectu se spis vyplati asociativni pole (objekt), pole typu index=>hodnota. (ted ale nevim, zda bude brat jako klic i nulu a jednicku; jako srting by to mel vzit, ale jako cisla nevim)
x = {'0':1, '1':2, 'a':3, 'b':4, ...}; //x['0']=1; x['1']=2; x['a']=3; x['b']=4; nebo x['0']=1; x['1']=2; x.a=3; x.b=4;
Select by jsi potom mel treba
<otion value=0>1</option>
<otion value=1>2</option>
<otion value=a>3</option>
<otion value=b>4</option>
document.write($list);
Tohle ti funguje? Nebo, co je to za pokus. V JS jsou promenne treba a,b,c,list a pod. Ale muzes tak nazvat i funkce. $, to si vymyslelo jquery pro funkci jquery. Shodou okolnosti je $ dalsi mozny znak, ktery lze pro jmeno promenne ci funkce pouzit. Jine jazyky jsou v tohle prisnejsi a maji pro $ jine vyuziti.
document.write($list); - vypise undefined, protoze promenna $ neexistuje
document.write(list); - vypise array, protoze nahore mas: var list = [];
document.write(list.toSource()); - firefox vypise prvky pole;
alert(list); - zobrazi alert s hlaskou a dokaze ne-asociativni pole zobrazit jako prvky s carkami; je to spis vychytavka pro ladeni
Nicmene, bezny uzivatel vypisuje pole pres cyklus. Viz ten muj priklad se str+=
Document.write je funkce, kterou zapisujes do stranky pri jejim vytvareni. Nelze ji pouzit uz na onclick. Muzes misto toho pouzit element.innerHTML='text', pripadne alternativu pres jquery, tusim $('#elementid').html('text')
Mozna, ze v jquery existuje i neco, co to pole umi vypsat. Nebo aspon spojit do stringu. Ja moc jquery nepouzivam.
Ahoj, problém je, kdy voláš to vypsání pole. Ty ho vypíše jen na konci načtení scriptu, kdy je samozřejmě prázdné. Přemísti vypsání třeba na konec event handleru pro element #copy a nebo #remove, kde se už něco s tím polem provede (naplní nebo vymaže):
$("#copy").on("click", function() {
$(".options option:selected").each(function() {
$("#textarea2").append('<option>' + $(this).text() + '</option>');
$(list.push($(this).text()));
$('option:selected', "#textarea").remove();
});
document.write(list);
});
#4 Naemos
TAk sem ten výpis přemístil , ale nic to nepomohlo.
Omlouvám se za natvrdlost, ovládám jen trochu PHP. Na Jquery koukám jako zjara.
$(function(){
$("#copy").on("click", function(){
$(".options option:selected").each(function(){
$("#textarea2").append('<option>'+$(this).text()+'</option>');
$(list.push($(this).text()));
$('option:selected', "#textarea").remove();
});
document.write(list[0]);
});
$("#remove").on("click", function(){
$(".remove option:selected").each(function(){
$("#textarea").append('<option>'+$(this).text()+'</option>');
$('option:selected', "#textarea2").remove();
});
document.write(list[0]);
});
});
Používáš stejný kód jako v úvodním postu? Mohl by jsi sem prosím kdyžtak napsat tvůj aktuální? Jinak funkční příklad http://jsfiddle.net/ko053thk/
Pro odstranění prvku z pole používám $.grep. Přidal jsem ti tam ještě div #pole do kterého vypisuji obsah proměnný list.
var list = [];
$(function () {
$("#copy").on("click", function () {
$(".options option:selected").each(function () {
$("#textarea2").append('<option>' + $(this).text() + '</option>');
list.push($(this).text());
$('option:selected', "#textarea").remove();
});
$("#pole").html(list);
});
$("#remove").on("click", function () {
$(".remove option:selected").each(function () {
var optionValue = $(this).text();
$("#textarea").append('<option>' + optionValue + '</option>');
$('option:selected', "#textarea2").remove();
list = $.grep(list, function(list_item){
return list_item != optionValue;
});
});
$("#pole").html(list);
});
});
#6 Naemos
Díky za kod , který funguje,
Jen nevím, jak vložit obsah do proměné:
var list = [];
$(function () {
$("#copy").on("click", function () {
$(".options option:selected").each(function () {
$("#textarea2").append('<option>' + $(this).text() + '</option>');
list.push($(this).text());
$('option:selected', "#textarea").remove();
});
$("#pole").text(list);
});
$("#remove").on("click", function () {
$(".remove option:selected").each(function () {
var optionValue = $(this).text();
$("#textarea").append('<option>' + optionValue + '</option>');
$('option:selected', "#textarea2").remove();
list = $.grep(list, function(list_item){
return list_item != optionValue;
});
});
var textik="";
textik=$("#pole").text(list);
document.write(textik);
});
});
háže to chybu, tedy ten write.
Je to pro mě Španělská vesnice.Omlouvám se , že otravuji.
Pavel Říha
Asi teď nějak nechápu co myslíš s tou proměnnou.
To pole je přístupné v kódu v proměnné "list". Pokud chceš vybrat jen konkrétní prvek z toho pole, můžeš třeba pomocí indexu (list[0], list[1], atd.) jak jsi psal dříve.
Jestli to pole chceš převést čístě na text, můžeš použít cyklus jak psal peter nebo použít metodu .join(oddělovač)
document.write(list.join(","));
#9 Naemos
Díky za pomoc ale mám ještě problém s uložením proměné do cookies(ta potom půjde pomocí PHP do Mysql)
napsal sem zatím:
var list = [];
$(function () {
$("#copy").on("click", function () {
$(".options option:selected").each(function () {
$("#textarea2").append('<option>' + $(this).text() + '</option>');
list.push($(this).text());
$('option:selected', "#textarea").remove();
});
$("#pole").text(list);
});
$("#remove").on("click", function () {
$(".remove option:selected").each(function () {
var optionValue = $(this).text();
$("#textarea").append('<option>' + optionValue + '</option>');
$('option:selected', "#textarea2").remove();
list = $.grep(list, function(list_item){
return list_item != optionValue;
});
});
$("#pole").text(list);
document.cookie="polozka="+(list.join(","));
});
});
</script>
<?PHP
echo($_COOKIE['polozka']);
?>
zatím to nefunguje.
http://peter-mlich.wz.cz/web/js/prjpw/cookies.html
Ja bych si pred tim udelal alert. Taky bacha na stredniky a jine znaky, ktere v cookies byt nesmi nebo slouzi k necemu jinemu.
str = list.join(",");
alert(str);
document.cookie="polozka="+str;
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Pole z jQuery do PHP — založil hhacker
JQuery videocast - Nauč sa jQuery — založil yablko
Razeni pole ktere v sobe ma dalsi pole podle hodnoty indexu — založil david
Zapsání generovaného čísla do pole a zapisování generovaných čísel d… — založil juraj111
Jak z "List<Integer> pole" uddelat normalni "int[] pole" — založil K4BlOs
Moderátoři diskuze