Jump to content
php.lv forumi

Bilžu pievienošana rakstiem


LorDRameX

Recommended Posts

  • Replies 35
  • Created
  • Last Reply

Top Posters In This Topic

maz man sajēgas no javascripra, pētu kodu krustām šķērsām. Nesaprotu, kāpēc šim

<input type="file" name="img[]" />

dublējoties saturs netiek nodots, bet

<input type="text" name="teext[]" />

saturs dublējās!

Edited by Alnis
Link to comment
Share on other sites

nekas nav mainījies, viss ir kā http://paste.php.lv/1880, tikai iekš <span> ieliku vēl vienu Text input fieldu:

 

<span id="sample">
Text:<input type="text" name="nododamais_txt[]" />
File:<input type="file" name="img[]" /></span>
</span>

 

ja pareizi saprotu, tad šī rinda:

div.innerHTML='<div>'+byid('sample').innerHTML+'</div>'

nokopē esošos formas elementus, kas ir iekš tagiem <span id="sample">! Bet kādā veidā text input fieldam unsetot vērtību, nemāku :(

 

EDIT:

neesmu pārliecināts vai viss strādā, bet atrisināju šitā: rindu

div.innerHTML='<div>'+byid('sample').innerHTML+'<input type="button" onclick="remove(this)" value="-" /></div>';

nomainīju uz:

div.innerHTML='<div>Text:<input type="text" name="nododamais_txt[]" />File:<input type="file" name="img[]" /><input type="button" onclick="remove(this)" value="-" /></div>';

mīnus protams ir tāds, ka, ja es iekš <span> gribēšu ielikt vēl kādu elementu, man tas būs jāiebaksta arī jaunradītajā rindā! Visādi citādi izskatās, ka vērtības tiek nodotas un ar $_REQUEST smuki arī nolasās! no ķēdes tika izslēgta function byid(id), man tā arī neizdevās saprast, ko viņa īsti dara :D

Edited by Alnis
Link to comment
Share on other sites

Tas byid() tev atgriež elementu pēc ID. Un tā kā tu viņu kopē, tad visi atribūti arī tiek nokopēti. Arī value.

 

OK, tatad atgriež visu elementu tāds kāds ir, bet es nesaprotu:

1. kāpēc viņš neatgriež input=file vērtību?

2. kā es varētu unsetot atgrieztā elementa vērtību:

2.1. ok, sākumā, es viņu nokopēju;

2.2. talāk, pirms izvades vajadzētu vērtību nodzēst, kā tas darāms?

 

ja es lietas sarežģīju, tad nevajag iespring, jo vajadzīgais rezultāts it kā tika rasts, vienīgi radās spotiska interese par to unestošanu nokopētajam elementam!

Link to comment
Share on other sites

1. Tas ir drošībai (kinda). Un arī loģiski nebūt augšupielādēt vienu un to pašu failu divreiz. Btw, atceries, ka ar JS vispār type="file" vērtību nav iespējams mainīt.

2. Ar JS protams ;)

var template = byid('sampe').cloneNode(true);
template.getElementByTagName('input')[0].value = '';
// tālāk veic ievietošanu ar template.innerHTML.

 

Šis gan strādās pareizi tikai tad, ja type="text" būs pirmais input elements.

Link to comment
Share on other sites

bet līdz nobela prēmijai man vēl atlicis atrisināt vēl vienu probzu :D

 

tātad, esmu ielicis divus input laukus, kuros ierakstītot vērtības parādās reizinājums trešajā input laukā. Pirmā rinda smuki reizinās, bet klonētājās rindās nekas nereizinās :( Viss penteris izskatās šādi (cerams neatraušos pa pa knābi šeit izliekot visu kodu):

 

<script language="JavaScript" type="text/javascript">
function reizinajums(formz)
{
sum_result = (form.sum_result.value);
vienscipars = document.getElementById("nododamais_txt1[]").value;
otrscipars = document.getElementById("nododamais_txt2[]").value;	
//sum_result= (viens * divi);
sum_result= (vienscipars * otrscipars);
//document.write("sum_result")
// ar so nododam formai, kurai jaaparada aprekinata vertiba
form.document.getElementById("sum_result").value = sum_result.toFixed(2);
}
</script>

<form id="form" name="form" method="get">
<span id="sample">
<? 
tfunkc();
function tfunkc(){
?>
Text1:<input  id="nododamais_txt1[]" name="nododamais_txt1[]" onkeyup="reizinajums(this.formz)"  />
Text2:<input  id="nododamais_txt2[]" name="nododamais_txt2[]" onkeyup="reizinajums(this.formz)"  />
Text3:<input  id="sum_result[]" name="sum_result[]" READONLY />
<?
}
?>

<script>reizinajums(this.form, '1', '1');</script>

</span>
<input id="plus" style="display:none" type="button" value="+" onclick="plusone()">
<div id="added"></div>

<input type="submit" value="iesniegt"></input>
</form>

<script type="text/javascript">
function byid(id)//atgriež objektu pēc tā id
{
if (document.getElementById)
return (document.getElementById(id));
if (document.all)
 return document.all[id];
if (document.layers)
 return document.layers[id];
return false;
}
function remove(elt)
{
/* pēc elementu pievienoſanas mums sanāk
<div id="added">
 <div>
  <input faila pievienoſanai>
  <input mīnuss>
 </div>
</div>
funkcija "iziet augſā" ->
no input mīnuss uz aptveroſo divu > div.added, un izdzēſ aptveroſo divu
ar tā input apakſelementiem*/
elt.parentNode.parentNode.removeChild(elt.parentNode);
}
function plusone()
{
//izveidojam jaunu <div> elementu, pagaidām tikai atmiņā
div=document.createElement('div');
var template = byid('sample').cloneNode(true);
template.getElementsByTagName('input')[0].value = '';
template.getElementsByTagName('input')[1].value = '';
template.getElementsByTagName('input')[2].value = '';
innerHTML=template.innerHTML;
div.innerHTML='<div>'+template.innerHTML+'<input type="button" onclick="remove(this)" value="-" /></div>';

//pievienojam diva ar id="added" beigās izveidoto divu, htmlā
byid('added').appendChild(div);
}
if (document.body.innerHTML)
byid('plus').style['display']='inline';
</script>
</body>
</html>

 

template.getElementsByTagName('input')[2].value = ''; šito pieliku, lai reizinājuma inout laukā nerādītos pirmo lauku reizinājuma klons. Ja pareizi saprotu, tad klonētajiem DIViem netiek izsaukta funkcija tfunkc(). Ja mēs paskatamies tālāk, tad man to reizinājumu lauki beigās būs jāsaskaita, moš šis risinājums nav tas labākais un kaukā savādāk jābetonē? Paldies par helpu :)

 

Vai tik probza nav tajā, ka izaucot funkciju reizinajums() netiek padota vērtība sum_result[]??? nu tobiš ar konkrēto indexu?

Edited by Alnis
Link to comment
Share on other sites


×
×
  • Create New...