Autor Zpráva
larryx
Profil *
Nazdar zacal som sa ucit AJAX a tak zaklady chapem, skusam si vytvorit registraciu ktora v realnom case kontroluje zadane inputy... to by bolo ok... ale teraz potrebujem zistit ze ked ajax vlastne overil vsetky inputy a je vse ok aby sa tlacidlo odoslania odkrylo... nieco som zbuchal:
function vsetkoOk(hodnota){
	if(pridaj.length <= 2){
		pridaj.push(hodnota);
	} else {
		pridaj=Array();
		pridaj.push(hodnota);
	}
	
	
	document.getElementById("submitDiv").innerHTML=pridaj[0]+" "+pridaj[1]+" "+pridaj[2];
	if(pridaj[0] == "ok" && pridaj[1] == "ok" && pridaj[2] == "ok"){
		document.getElementById("userSend").disabled = '';
	} else {
		document.getElementById("userSend").disabled = 'disabled';
	}
}


funkciu vsetkoOK() volam kazdom ajaxovej funkcii onreadystatechange()

PS: ide o to ze ak mam vypneny formular a niekde je chyba... a ju opravim vsetko je ok tak vlastne aby sa mi aj opravila v poli ta polozka... a to my spravi az ked vlastne vsetky polia prejdem (cez onBlur je volana ajaxova funkcia na overenie) takze viem co je zatym... ale neviem ako to poriesit kedze v JS som newbie... dik za rady
Chamurappi
Profil
Reaguji na larryxe:
Vlastnost disabled nabývá hodnot true a false, nikoliv "disabled" a "". Ale s tím problém nebude.
Uvedený kód je (nějak) funkční, ne? Akorát asi není moudré, že zkoumáš počet odpovědí „ok“, jelikož k onbluru můžu dojít víckrát, než kolik je <input>ů. Měl by sis asi do odpovědi ze strany serveru schovat, k jakému formulářovému prvku se vztahuje.
_es
Profil
larryx:
document.getElementById("userSend").disabled = 'disabled';
má rovnaký výsledný efekt ako:
document.getElementById("userSend").disabled = true;
larryx
Profil
Chamurappi:
noo disabled="disabled" mi generuje Adobe dreamweaver CS4 a funguje to...

ano, ako hovorim ucim sa to skusam, to moje riesenie bolo onicom, no uz som prisiel na to ako...

function checkAll(hodnota,index){
	pridaj[index]=hodnota;
	
	if(pridaj[0] == "ok" && pridaj[1] == "ok" && pridaj[2] == "ok"){
		document.getElementById("userSend").disabled = '';
	} else {
		document.getElementById("userSend").disabled = 'disabled';
	}
}


a kazdy input ma svoj index... cize to volam checkAll(this.value,0) napriklad...

no a teraz by som este chcel vediet ako si to myslel stym overovanim... ako by si riesil to overovanie ty ?? ano je pravda ja len pracujem na tom zatial tam je text ok ale v buducnosti predpokladam ze tam hodim neaky obrazok alebo tak... preto ma zaujima ako to overit aj inak ?? dik...

Moderátor Chamurappi: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
_es
Profil
larryx:
disabled="disabled" mi generuje Adobe dreamweaver CS4 a funguje to...
Úplne rovnako, teda s rovnakým efektom, ti bude fungovať aj disabled="enabled" aj disabled="hocijaky neprazdny textovy retazec" aj disabled=true.
A rovnaký efekt ako disabled='' bude mať disabled=false.
Chamurappi
Profil
Reaguji na larryxe:
noo disabled="disabled" mi generuje Adobe dreamweaver CS4 a funguje to...
Já mluvil o vlastnosti disabled v DOMu, ne o atributu disabled v HTML.

ako by si riesil to overovanie ty ??
Na tvém místě bych nepoužíval pole, ale strukturu (v řeči jiných jazyků: asociativní pole). Na začátku bych si nastavil:
var naKontrolu = {
  "jmeno": false,
  "prijmeni": false,
  "cislo-bot": false
};
Pak bych v onbluru měl volání zkontrolujMe(this). Funkce zkontrolujMe (s argumentem prvek) by poslala skriptu na straně serveru prvek.name a prvek.value a server by vrátil odpověď. V odpovědi by byly nějak oddělené (např. středníkem) dvě věci — jméno prvku a stav. Rozdělil bych je, vyrobil bych kusy pomocí odpověď.split(";"), což je javascriptová obdoba péhápéčkového explodu. Pak bych nastavil naKontrolu[kusy[0]] = (kusy[1] == "ok"). Díky tomu by se výsledek kontroly každého prvku (true/false) odrážel ve struktuře naKontrolu.

Strukturu naKontrolu bych ve vhodný okamžik kontroloval:
var jeChyba = false;
for(v in naKontrolu)
{
  if(naKontrolu[v] == false) jeChyba = true;
}
A pak do čudlík.disabled přiřadil hodnotu proměnné jeChyba.

Takto bych to dělal na tvém místě. Na svém místě bych to napsal méně názorně.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: