ugrás a tartalomhoz

javascript input üres-e?

newyorkerboy · 2009. Nov. 5. (Cs), 19.46
egy olyan formot szeretnék készíteni, amiben táblázatszerűen van egymás mellett van két input box, és egy gomb. ha mindkért mező ki van téve, alattuk megjelenik egy újabb sor ugyanígy (elég, ha a két input jelenik meg, a gombot majd elintézem) ehhez arra gondoltam, valmi ilyesmit írok:

function figyeles(){
if (document.mp3share.szam1.value!=''){
document.mp3share.szam2.style.display='block';}
figyeles();}
és body onload="figyeles();"
kézenfekvő megoldásnak tűnt, de nem működik.
 
1

Mi a kérdés?

Poetro · 2009. Nov. 5. (Cs), 20.04
Nem teljesen tiszta, hogy mit szeretnél csinálni, és ehhez hogyan kapcsolódik a fenti JavaScript.
2

akkor megpróbálom még 1x, bár

newyorkerboy · 2009. Nov. 5. (Cs), 20.17
akkor megpróbálom még 1x, bár példaoldalt pont most nem találtam sehol. mondjuk, h fel akarsz tölteni egy csomó fájlt, és csinálsz 1 file inputot. ha van ott betöltött fájl, megjelenik alatta még 1 input, még 1 feltöltendő fájlnak. ezt gondoltam úgy megoldani, h előre kirakok pl 10 inputot, és style="display:none"-nal elrejtem, a scriptben írt módon aztán megjelenítem, ha az utolsó ki van töltve (value!="").
3

Az nagyon primitív megoldás

mgergo90 · 2009. Nov. 5. (Cs), 20.33
Az nagyon primitív megoldás lenne.
Helyette csináld azt, hogy egy div innerHTML-jét mindig bővíted ezzel:
<input type="file" onchange="figyeles()" />

a figyeles() függvénnyel megnézed, hogy a this.value üres-e, ha nem akkor bővíted a div tartalmát. (<input type="file" onchange="figyeles()" />)
4

nemrossz megoldás, nekem

newyorkerboy · 2009. Nov. 5. (Cs), 21.05
nemrossz megoldás, nekem eszembe se jutott, köszi! ha nem haragszol, kérdeznék még valamit: ha van egy html-en belül egy iframeme, a parent ablakból el tudom érni az iframe aktuális címét valahogy?
5

valami mégsem teljesen jó,

newyorkerboy · 2009. Nov. 5. (Cs), 21.35
valami mégsem teljesen jó, nem úgy működik ahogy kéne.


<html>
<head>
<title>Index</title>
</head>
<script>

function figyeles(){
document.getElementById("tabla").innerHTML=document.getElementById("tabla").innerHTML+'<tr><td><input type="text" onchange="figyeles();"></td><td><input type="text"></td><td><input type="button" value="Küldés"></td></tr>';}

</script>
<body>

<form action="index.html" method="post">


<table>
<div id="tabla">
<tr><td><input type="text" onchange="figyeles();"></td><td><input type="text"></td><td><input type="button" value="Küldés"></td></tr>
</div>
</table>


</form>

</body>
</html>

6

Egy példa

Poetro · 2009. Nov. 5. (Cs), 21.46
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd"
    >
<html lang="en">
<head>
    <title><!-- Insert your title here --></title>
</head>
<body>
<form action="" method="post" id="data-form">
  <fieldset class="field-row">
    <label for="field1[0]">Mező 1: <input type="text" name="field1[0]" value="" /></label>
    <label for="field2[0]">Mező 2: <input type="text" name="field2[0]" value="" /></label>
    <input type="submit" name="field3[0]" />
  </fieldset>
</form>
<script type="text/javascript">
window.onload = function () {
  var form = document.getElementById('data-form');
  var fieldsets = form.getElementsByTagName('fieldset');

  // Inicializálja a fieldset-et hogy figyelje annak elemeit.
  var initFieldset = function () {
    var i, fieldset = this, inputs = fieldset.getElementsByTagName('input');
    for (i = 0; i < inputs.length; i++) {
      if (!!inputs[i].type && inputs[i].type == 'text') {
        // Ha változik a text típusú elem, akkor lehet indul a klónozás.
        inputs[i].onchange = function () {
          // Megnézzük, hogyu minden text mező ki lett-e töltve.
          var j = itemsFilled = itemsToFill = 0;
          for (j = 0; j < inputs.length; j++) {
            if (!!inputs[j].type && inputs[j].type == 'text') {
              itemsToFill++;
              if (!!inputs[j].value.length) {
                itemsFilled++;
              }
            }
          }

          // Ha minden text mező ki van töltve, mehet a klónozás.
          if (itemsToFill == itemsFilled) {
            // Ebbe pakoljuk a klónt.
            var div = this.ownerDocument.createElement("div");
            div.appendChild( fieldset.cloneNode(true) );

            // Veszük a HTMLt, és cseréljük a megfelelő elemeket.
            var htmlText = div.innerHTML.replace(
              /(\s(?:for|name)="?field\d+\[)(\d+)(\]"?)/g, function () {
                return arguments[1] + (parseInt(arguments[2]) + 1) + arguments[3];
            });
            div.innerHTML = htmlText;

            // Végül pedig beszúrjuk az aktuális fieldset után.
            initFieldset.call(div.firstChild);
            fieldset.parentNode.insertBefore( div.firstChild, fieldset.nextSibling );
          }
        };
      }
    }
  }

  // Végigmegyünk az összes fieldseten és inicializáljuk.
  for (var i = 0; i < fieldsets.length; i++) {
    if (/(?:^|\s)field-row(?:$|\s)/.test(fieldsets[i].className)) {
      initFieldset.call(fieldsets[i]);
    }
  }
};
</script>
</body>
</html>
7

ó, köszönöm, ez működik

newyorkerboy · 2009. Nov. 6. (P), 21.00
ó, köszönöm, ez működik természetesen, bár reméltem hogy valami rövidebb dologgal meg lehet oldani, meghogy majd saját magamtól :/ de hát nem ment, úgyhogy ezt fogom használni :D