ugrás a tartalomhoz

input lekérdezés egy adott szövegre

hpatrick · 2010. Szep. 25. (Szo), 01.03
Sziasztok!

Kezdő vagyok javascriptben ezért segítséget szeretnék kérni attól akinek ez könnyen megy. Szeretném javascriptel lekérdezni azt, hogy egy adott szót tartalmaz e a beírt szöveg egy adott inputba. Úgyan úgy mind amikor nevet kell megadni és nem ad meg dobjon fel egy alertot.
A feladat az lenne, hogy egy adott inputon keresztül linket szeretnék bevinni az adatbázisba, és ha nincs a link elején ott, hogy "http://" akkor dobjon fel egy alertot.

Előre is köszönöm annak aki segít!
Szép Napot!
Patrik
 
1

Mikor dobjon fel?

Poetro · 2010. Szep. 25. (Szo), 02.03
És miért pont alertet? Rengeteg esemény van, amire rá lehet akaszkodni, legyen az focus, blur, change, keydown, keyup, keypress, stb, és nem teljesen mindegy, mikor történik meg az alert.

Egy megoldás a problémára
(function (window, document, inputId) {
  var urlRe = /^http:\/\//,  // Reguláris kifejezés ami illeszkedik az URL elejére
      addEvent = function (elm, evt, func) { // Böngésző független eseménykezelő
        var f = function (event) {
                  var target;

                  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; }

                  return func.apply(target, arguments);
                };

        if (elm.addEventListener) {
          elm.addEventListener(evt, f, false);
        }
        else if (elm.attachEvent) {
          elm.attachEvent(('on' + evt), f);
        }
        else {
          elm['on' + evt] = f;
        }
      },
      init = function () { // Inicializálás
        var s = document.getElementById(inputId); // Megkeressük az input-ot
        if (s) {
          addEvent(s, 'change', function (event) { // Hozzáadjuk az eseménykezelőt
            if (!urlRe.test(this.value)) { // Egyezik az érték a reguláris kifejezéssel?
              alert("Nem megy"); // Hiba.
            }
          });
        }
      };
  addEvent(window, 'load', init);
}(this, document, 'input-id'));
Az persze más kérdés, hogy szerintem senki nem szeretne alertet kapni az arcába, ennél léteznek kifinomultabb módszerek a felhasználó figyelmeztetésére.
2

Végül is nem fontos az alert,

hpatrick · 2010. Szep. 25. (Szo), 03.41
Végül is nem fontos az alert, igazad van. :)
A lényeg, hogy kétféle felhasználó van. Van aki a link elé teszi azt, hogy http, és ugye van az aki nem. Na most együttesen kellene kezelni mindkét változatot. Azaz vagy mindkét változatnál összehozni azt, hogy az adatbázisba http-vel legyen letárolva. Vagy úgy letárolni mindkettőt, hogy http nélkül és akkor forrásból odateszem. Na most vagy levágni kellene arról a linkről amikor beírják a http-t, vagy hozzátenni annak a linknek az elejéhez ahova nem írják be.
Erre lenne szükségem...
Az alertre azért gondoltam, mert talán egyszerűbb...
De ha tudsz valami jó megoldást, szívesen fogadom.

Köszönöm a gyors választ!

Pár órát szunyálok és leszek... :P
3

felhasználóbarátság?

QXY · 2010. Szep. 25. (Szo), 04.55
Szerintem ezt szerveroldalon kellene megoldanod az adatbázisba írás előtt.
Kiegészíted, vagy levágod, ahogy neked kell. De ne a szerencsétlen felhasználót zaklasd már alertekkel, hogy "rakd elé a http-t b+". Nem túl elegáns... :)
4

Okés, köszönöm... Csak az a

hpatrick · 2010. Szep. 25. (Szo), 21.44
Okés, köszönöm... Csak az a baj, hogy azt sem tudom megoldani, hogy leellenőrizze és levágja vagy elérakja... :(
5

Megnézed

Poetro · 2010. Szep. 25. (Szo), 22.19
Megnézed, hogy mi az első 7-8 karakter, ebből tudod, hogy kirakta-e a HTTP-t. De persze PHP-ban rengeteg egyéb módszer létezik arra, hogy megtudd, a kapott adat URL-e, például filter_var.
6

Hú de jó lenne ha én ezt így

hpatrick · 2010. Szep. 25. (Szo), 23.06
Hú de jó lenne ha én ezt így vágnám... :(
Szóval az alábbi scriptet használom arra, hogy az adott formban lévő inputot leellenőrizzem, írt e bele valami. Na most jó lenne, ha némi bővítéssel leellenőrizné, hogy tartalmaz e az input első pár karaktere http:// -t, és ha nem akkor felhívná a figyelmét egy alert. Sorry, de jó lesz ez így, mert a többi sajna magas nekem.

<script>
function check_form_add(){
var list_warning = "";

if(document.form_add.url.value == ""){
list_warning += "Add meg a webcímet!\n";
}

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

Köszönöm a segítséget!
7

Szerver oldalon

Poetro · 2010. Szep. 25. (Szo), 23.30
Az előbb már megegyeztünk abban, hogy szerver oldalon lenne jó ezt ellenőrizni. De ha te kliens oldalon, JavaScripttel IS el akarod ezt végezni, és tudod, hogyan kell megnézni, hogy üres, akkor ugyanott le tudod vágni az első 7 karakterét, és megnézni, hogy az egyezik-e azzal, hogy http://. Elárulom substr, illetve substring lesz a barátod.
8

Húú... Gyakorlatba ültetnéd

hpatrick · 2010. Szep. 26. (V), 00.08
Húú...
Gyakorlatba ültetnéd kérlek, mert nekem így ez nem megy... :(

Köszi!
9

Micsodát?

Poetro · 2010. Szep. 26. (V), 00.14
Nem tudom ez mire vonatkozott. Ha ezek után nem tudod, mire keress rá a neten, illetve milyen programozási módszert kellene használni, akkor lehet, hogy több felkészülés kellene, mielőtt ilyen bonyolultságú feladatba belefogsz. Mondjuk a kiszemelt nyelv függvényében érdemes lehet megvenni, elolvasni, és gyakorlatba ültetni pár könyvet.
10

Valószínű, hogy nem tudtam

hpatrick · 2010. Szep. 26. (V), 01.22
Valószínű, hogy nem tudtam jól elmondani neked amit szerettem volna. Mindegy. Keresésben toppon vagyok és ráleltem a megoldásra.

if(document.form_add.url.value.indexOf(\'http://\') == -1)

Így ha nincs az url inputba benne a http://, dob egy alertot és kész.
Tudom nem a legelegánsabb megoldás. De megoldásnak megoldás.

Köszönöm azért a segítséget!