ugrás a tartalomhoz

href submit és hozzá alert

hpatrick · 2010. Nov. 25. (Cs), 10.14
Sziasztok! Egész nap ezzel szenvedek, mert sajnos JS-ből nem vagyok profi. Szóval van egy form-om amiből a submit-ot linkel szeretném megoldani. Na most ezt meg is oldottam, viszont így az alert nem működik. Gondoltam össze hegesztem a 2 javascriptet, de sajna nem jött össze.
Vagyis az alábbi módszerrel elindul a művelet, az alert is felugrik, de miután rákattintok az alert kisablakon, hogy "OK", utána lefut a form :(

Előre is köszönöm a válaszokat!

<script>
function check_form_add(){
var list_warning = "";
if(document.form1.name.value == ""){
list_warning += "Írd be a neved!\n";
}

if(list_warning == ""){
return true;
} else{
alert(list_warning);
return false;
}
}
</script>

<script type="text/javascript">
function submitform()
{
document.forms["form1"].submit(check_form_add());
}
</script>

<form action="add_new_link.php" method="post" name="form1" id="form1" onSubmit="return(check_form_add());">

<textarea name="name" id="name"></textarea>

<select name="id_folder" id="id_folder">
<option value="select_folder">Válassz kategóriát!</option>
<option value="1">1...</option>
</select>

<a href="javascript: submitform()">Beküld</a>

</form>
 
1

Diszkrét JavaScript

Poetro · 2010. Nov. 25. (Cs), 13.38
<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title>href submit és hozzá alert</title>
</head>
<body>
  <form action="add_new_link.php" method="post" id="form1">
    <textarea name="name" id="name"></textarea>
    <select name="id_folder" id="id_folder">
      <option value="">Válassz kategóriát!</option>
      <option value="1">1...</option>
    </select>
    <a href="#submit" class="form-submit">Beküld</a>
  </form>

  <script type="text/javascript">
    // Böngésző független esemény hozzácsatolás (messze nem tökéletes)
    function addEvent(elm, evt, func) {
      // Olyan függvényt állítunk elő amiben a this már az esemény célpontja.
      function f(event) {
        var target, // Az esemény célpontja
            returnValue;

        if (!event) event = window.event;
        if (event.target) target = event.target;
        else if (event.srcElement) target = event.srcElement;
        if (target && target.nodeType == 3) target = target.parentNode;
        event.preventDefault = event.preventDefault || function () {
          this.returnValue = false;
        };
        event.stopPropagation = event.stopPropagation || function () {
          this.cancelBubble = true;
        };

        returnValue = func.call(target, event);
        if (returnValue === false) {
          event.preventDefault();
          event.stopPropagation();
        }

        return returnValue;
      }

      if (elm.addEventListener) {
        elm.addEventListener(evt, f, false);
      }
      else if (elm.attachEvent) {
        elm.attachEvent(('on' + evt), f);
      }
      else {
        elm['on' + evt] = f;
      }
    }

    // Esemény kiváltása.
    function fireEvent(element, event) {
      var evt;
      if (document.createEvent) {
        // dispatch for firefox + others
        evt = document.createEvent("HTMLEvents");
        evt.initEvent(event, true, true); // event type,bubbling,cancelable
        return !element.dispatchEvent(evt);
      } else if (document.createEventObject) {
        // dispatch for IE
        evt = document.createEventObject();
        return element.fireEvent('on' + event, evt);
      }
      else {
        return false;
      }
    }

    // Submit esemény kezelése
    function checkSubmit(event) {
      var warnings = [],
          name = document.getElementById('name'),
          folder = document.getElementById('id_folder');

      if (name && name.value === '') {
        warnings.push('Írd be a neved!');
      }
      if (folder && folder.value === '') {
        warnings.push('Válassz kategóriát!');
      }

      if (warnings.length) {
        event.preventDefault();
        alert(warnings.join('\n'));
      }
    }

    // Testreszabás
    (function (window, document, id, tag, className, submitCheck) {
      var form = document.getElementById(id),
          tags, i, link;

      // Click esemény kezelése
      function checkClick(event) {
        event.preventDefault();
        fireEvent(form, 'submit');
      }

      if (form) {
        // Megvan a form, keressük ki belőle a submit linkeket.
        tags = form.getElementsByTagName(tag);
        for (i = tags.length - 1; i >= 0; i -= 1) {
          link = tags[i];
          if (className.test(link.className)) {
            // Megvan a link, adjuk hozzá az eseménykezelőt
            addEvent(link, 'click', checkClick);
          }
        }

        // A formhoz is adjuk hozzá az eseménykezelőt.
        addEvent(form, 'submit', submitCheck);
      }
    }(this, document, 'form1', 'a', /(?:^|\s)form-submit(?:$|\s)/, checkSubmit));
  </script>
</body>
</html>
szerk: Valami nem frankó ezzel a kódszínezővel, itt is ismétel szavakat, pl. event ill. target.
Nem lehetne lecserélni valami másikra? Lásd pl. Egyszerű Syntax Highlighter Drupal 5 alatt
2

bonyolult

hpatrick · 2010. Nov. 25. (Cs), 14.48
Köszönöm a segítséget, de sajnos hozzá nem értésemből fakadóan amit tudtam ezzel kezdeni az az, hogy egy az egyben bemásoltam :)
Na most így sajna nem működik :(
Kell még valamit átírnom rajta?
Elnézést, de ennyire nem vágom a JS-t...
3

Működik

Poetro · 2010. Nov. 25. (Cs), 14.52
Lásd a példa oldalt.
4

Működik - siker...

hpatrick · 2010. Nov. 25. (Cs), 15.09
Biztos én rontottam el valamit először, de a példaoldalból ahogy kimásoltam rögtön jó lett. Még nem formáztam, meg semmi, de remélem elboldogulok vele...
Nagyon szépen köszönöm a segítséget!

Minden esetre egyébként a tegnapi napon még ez után kutakodtam, megint sok mindent tanultam. Bár ez a szint amit küldtél nekem sok, de a legjobb tudásom szerint megpróbálom kielemezni.

Tényleg köszi!
5

Gondom támadt

hpatrick · 2010. Nov. 26. (P), 00.27
Sajnos megint problémám adódott. Chromba és IE8-ba nem jó a dolog :(
Érdekes, mert az alert müködik, de ha a selectel választok, akkor utána nem küldi el...
Köszönöm, ha tudsz még segíteni!
6

Frissítettem, így mostmár

Poetro · 2010. Nov. 26. (P), 03.41
Frissítettem, így mostmár mennie kell.
7

Ezer köszönet...

hpatrick · 2010. Nov. 26. (P), 11.55
Úgy néz ki, hogy működik... Nagyon-nagyon köszönöm a segítségedet! Jó hétvégét!
8

Facebook

hpatrick · 2010. Nov. 26. (P), 16.06
Tényleg köszönöm az eddigi segítségedet, és igazán nem akarom az idődet rabolni, de mivel úgy látom vágod a dolgokat, gondoltam megkérdezem, hogy a facebookos dolgokat vágod e?
Adott az oldalam:
Itt meg van oldva, hogy ha valamelyik receptre kattintasz, tudjad "lájkolni" a saját oldalán a receptet és megjelenjen a facebookos hírfaladon is.
Viszont szerettem volna megoldani azt is, hogy ha pl. kilistázom a desszerteket, akkor
minden recept mellé tudjak tenni egy "Tetszik" gombot. Végül is ezt ugye meg lehet oldani könnyen, csak azt nem, hogy a megfelelő recept nevét kiírja a hírfalamra. Mivel minden receptnek más az "id" száma, és ugye a meta tegekből szedi a facebook az adatokat, így hiába oldom meg úgy ahogy minden egyes recept saját oldalán tettem, nem tudja értelmezni az oldal, hogy melyik receptről van szó. Próbáltam googlebe rákeresni, de nem tudtam megoldani sajnos.

Nagyon megköszönném, ha némi segítséget tudnál nekem ebben adni...
9

API

Poetro · 2010. Nov. 26. (P), 17.06
Szerintem olvasd el a Facebook ide vonatkozó API-ját. Abban biztosan megtalálod rá a választ. És új téma, új fórum téma.