i try following method. its not working. please give me some tips on it.
function Student(first, last, level, grades) {
this.firstName = first;
this.lastName = last;
this.gradeLevel = level;
this.grades = grades;
}
// Offer a different object structure for JSON serialization
Student.prototype.toJSON = function () {
var gpa = 0,
i = this.grades.length;
while (i--) {
gpa += this.grades[i];
}
return {
name: this.lastName + ', ' + this.firstName,
gpa: ((gpa / this.grades.length) / 25).toFixed(1)
};
};
var students = ;
students.push( new Student(“John”, “Schmidt”, 1, [95,90,92,87,100,100]) );
students.push( new Student(“Irene”, “Gamel”, 1, [72,70,88,76,100,95]) );
students.push( new Student(“Francis”, “Yeh”, 1, [53,67,100,0,78,88]) );
var studentJSON = YAHOO.lang.JSON.stringify(students);
// studentsJSON now contains the string
// [{“name”:“Schmidt, John”,“gpa”:“3.8”},{“name”:“Gamel, Irene”,“gpa”:“3.3”},{“name”:“Yeh, Francis”,“gpa”:“2.6”}]
Following is my full script
<script type="text/javascript">
YAHOO.example.FnMultipleFields = function () {
var myContacts = "";
//function Student(first, last, level, grades) {
function user(idstr, fnamestr, lnamestr, nnamestr) {
this.idval = idstr;
this.fnameval = fnamestr;
this.lnameval = lnamestr;
this.nnameval = nnamestr;
}
// Offer a different object structure for JSON serialization
user.prototype.toJSON = function () {
return {
id: this.idval,
fname: this.fnameval,
lname: this.lnameval,
nname: this.nnameval
};
};
var div = document.getElementById('container');
var handleSuccess = function (o) {
YAHOO.log("The success handler was called. tId: " + o.tId + ".", "info", "example");
if (o.responseText !== undefined) {
response = o.responseText;
response = response.replace(/_/g, '"');
myContacts = response.split("~");
var users = [];
for (var i = 0; i < myContacts.length; i++) {
var value = myContacts[i];
users.push(new user(myContacts[i]));
}
var usersJSON = YAHOO.lang.JSON.stringify(users);
div.innerHTML = myContacts;
}
}
var handleFailure = function (o) {
YAHOO.log("The failure handler was called. tId: " + o.tId + ".", "info", "example");
if (o.responseText !== undefined) {
alert(o.statusText);
}
}
var callback =
{
success: handleSuccess,
failure: handleFailure,
argument: { foo: "foo", bar: "bar" }
};
//var sUrl = "assets/get.php?username=anonymous&userid=0";
var sUrl = "getdata.aspx";
var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
// Define a custom search function for the DataSource
var matchNames = function (sQuery) {
alert("First" + myContacts.length);
// Case insensitive matching
var query = sQuery.toLowerCase(),
contact,
i = 0,
l = myContacts.length,
matches = [];
// Match against each name of each contact
for (; i < l; i++) {
contact = myContacts[i];
//alert(contact);
if ((contact.fname.toLowerCase().indexOf(query) > -1) ||
(contact.lname.toLowerCase().indexOf(query) > -1) ||
(contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) {
matches[matches.length] = contact;
}
}
return matches;
};
// Use a FunctionDataSource
var oDS = new YAHOO.util.FunctionDataSource(matchNames);
oDS.responseSchema = {
fields: ["id", "fname", "lname", "nname"]
}
// Instantiate AutoComplete
var oAC = new YAHOO.widget.AutoComplete("myInput", "myContainer", oDS);
oAC.useShadow = true;
oAC.resultTypeList = false;
// Custom formatter to highlight the matching letters
oAC.formatResult = function (oResultData, sQuery, sResultMatch) {
var query = sQuery.toLowerCase(),
fname = oResultData.fname,
lname = oResultData.lname,
nname = oResultData.nname || "", // Guard against null value
query = sQuery.toLowerCase(),
fnameMatchIndex = fname.toLowerCase().indexOf(query),
lnameMatchIndex = lname.toLowerCase().indexOf(query),
nnameMatchIndex = nname.toLowerCase().indexOf(query),
displayfname, displaylname, displaynname;
if (fnameMatchIndex > -1) {
displayfname = highlightMatch(fname, query, fnameMatchIndex);
}
else {
displayfname = fname;
}
if (lnameMatchIndex > -1) {
displaylname = highlightMatch(lname, query, lnameMatchIndex);
}
else {
displaylname = lname;
}
if (nnameMatchIndex > -1) {
displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
}
else {
displaynname = nname ? "(" + nname + ")" : "";
}
return displayfname + " " + displaylname + " " + displaynname;
};
// Helper function for the formatter
var highlightMatch = function (full, snippet, matchindex) {
return full.substring(0, matchindex) +
"<span class='match'>" +
full.substr(matchindex, snippet.length) +
"</span>" +
full.substring(matchindex + snippet.length);
};
// Define an event handler to populate a hidden form field
// when an item gets selected and populate the input field
var myHiddenField = YAHOO.util.Dom.get("myHidden");
var myHandler = function (sType, aArgs) {
var myAC = aArgs[0]; // reference back to the AC instance
var elLI = aArgs[1]; // reference to the selected LI element
var oData = aArgs[2]; // object literal of selected item's result data
// update hidden form field with the selected item's ID
myHiddenField.value = oData.id;
myAC.getInputEl().value = oData.fname + " " + oData.lname + (oData.nname ? " (" + oData.nname + ")" : "");
};
oAC.itemSelectEvent.subscribe(myHandler);
return {
oDS: oDS,
oAC: oAC
};
} ();
</script>