Håndtering af form i FBJS
Hi.Jeg er igang med at lave en Facebook ap, hvor jeg har en form, der bliver genereret fra en db. Formen vises via php og er så tilgængelig fra fbjs via tagget fb:js-string.
Her er en kort snippet:
echo "<div id='cf'>";
echo "<fb:js-string var='catForm'>";
echo "<h2>Choose your favorite categories:</h2>";
$contact = new contact(null,null,null);
$user = $contact->getAllCategoriesForAUserFromServer($uid);
$iconUrls = $contact->getAllCategoryIcons();
$iconTuple = null;
unset($contact);
echo "<form id='cCat' name='cCat' method='POST'>";
echo "<table>";
$count = count($iconUrls);
for($i = 0; $i < $count; $i=$i+3) {
$iconTuple = split("\?#\?", $iconUrls[$i]);
echo "<tr>";
echo " <td><img src='" . $iconTuple[1] . "' /></td>";
if( in_array($iconTuple[0], $user) ) {
echo " <td><input type='checkbox' name=" . $iconTuple[0] ." id=".$iconTuple[0]. " value='true' onClick='handleForm(this.form)' checked />" . $iconTuple[0] . "</td>";
}else{
echo " <td><input type='checkbox' name=" . $iconTuple[0] ." id=".$iconTuple[0]. " value='true' onClick='handleForm(this.form)' />" . $iconTuple[0] . "</td>";
}
.....
echo "</form>";
echo "<br/>";
echo "</fb:js-string>";
Mit problem er at, jeg har en box som jeg kalder "facebook friends", og så snart den checkbox er checked, skal alle de andre gray out, så man ikke kan vælge dem.
Som det kan ses foroven, forsøger jeg at gøre det via handleForm(...) functionen
jeg har forsøgt at gøre dette:
function handleForm(form) {
var f = document.getElementById("cCat");
var params = [];
params = f.serialize();
if(params.Art) {
document.getElementById("google").setTextValue("checked" + params.length);
}else{
document.getElementById("google").setTextValue("not checked"+ params.length);
}
}
Men, af en eller anden grund, vises params.length bare som "undefined". Jeg vil virkelig gerne have en måde, hvorpå jeg kan løbe listen af inputs (checkboxes) igennem dynamisk, da jeg regner med at der skal tilføjes/fjernes elementer løbende.
Jeg har en anden function der tager sig af at submitte formen via et Ajax kald, som bruger serialize() og det virker fint.
help?