Tuesday 8 April 2014

JQuery Validation for Array of Input Elements

1) Add validation rule as :-


$().ready(function() {
// validate the comment form when it is submitted
$("#signupForm").validate({
rules: {
"category[]": "required"
},
messages: {
"category[]": "Please select category",
}
});
});
2) Find the checkform function in jquery.validation.js and replace with below code:-
checkForm: function() {
this.prepareForm();
for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
if (this.findByName( elements[i].name ).length != undefined && this.findByName( elements[i].name ).length > 1) {
for (var cnt = 0; cnt < this.findByName( elements[i].name ).length; cnt++) {
this.check( this.findByName( elements[i].name )[cnt] );
}
} else {
this.check( elements[i] );
}
}
return this.valid();
}
if wants to makes it work specific to a form not globally just add below code to specific file:-
$.validator.prototype.checkForm = function () {
//overriden in a specific page
this.prepareForm();
for (var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++) {
if (this.findByName(elements[i].name).length != undefined && this.findByName(elements[i].name).length > 1) {
for (var cnt = 0; cnt < this.findByName(elements[i].name).length; cnt++) {
this.check(this.findByName(elements[i].name)[cnt]);
}
} else {
this.check(elements[i]);
}
}
return this.valid();
}

Monday 7 April 2014

Javascript OOPS Questions

Javascript (40 questions)
  1. How would you randomly pick an element from an array named myNumbers?

  2. Which of the following is not a Javascript operator?

  3. A cookie is set using the below Javascript statement. When will it expire?

    document.cookie = "foo=bar;secure";
  4. What is Firebug?

  5. Which of the following is not a popular Javascript framework?

  6. Which of the below can be used to perform an asynchronous request to the web server?

  7. What's computed by this code?

    (function(n){return (n && n*arguments.callee(n-1)) || 1;})(10);
  8. How do you remove a property prop from an object obj?

  9. Assuming a refers to a function, how would you execute a after a delay of one second?

  10. What is JSON?

  11. The below script has some troubles getting the numbers right. What could be wrong?

    var fruitSaladRecipe = "2 apples, papaya, coconut, 5 oranges, apple, banana",
        ingredients = fruitSaladRecipe.split(/,\s+/),
        ingredientHash = {},
        num = 0; // Total number of fruits
    for (var i=0 ; i<ingredients.length ; i++) {
        var ingredient = ingredients[i],
            fruitType = ingredient.match(/(\w+)$/)[1].replace(/s$/, ""),
            numPieces;
        if (/^\d+/.test(ingredient)) {
            var num = ingredient.match(/^(\d+)/)[1];
            numPieces = parseInt(num, 10);
        }else{
            numPieces = 1;
        }
        if (/^(?:banana)$/.test(fruitType)) {
            // Speaking of bananas, let's add some more! Those things are delicious!
            numPieces *= 2;
        }
        num += numPieces;
        if (fruitType in ingredientHash) {
            numPieces += ingredientHash[fruitType];
        }
        ingredientHash[fruitType] = numPieces;
    }
    var message = num + " fruit(s) in total:";
    for (var ingredient in ingredientHash) {
        if (ingredientHash.hasOwnProperty(ingredient)) {
            message += "  " + ingredientHash[ingredient] + " " + ingredient + "(s)";
        }
    }
    alert(message);
  12. What is the return value of setInterval?

  13. Why doesn't the below code open an alert box with the text "foo"?

    function wrapInObject(value) {
        return
        {
            value: value
        };
    }
    alert(wrapInObject("foo").value);
  14. Why doesn't the below code open an alert box with the text "foobar"?

    var a = "foo",
        b = a;
    b += "bar";
    alert(a);
  15. What does the function f do?

    function f(a) {
        return function(b) {
            return a + b;
        };
    }
  16. Why doesn't this work as intended?

    function makeNumberSequenceGenerator(nextValue) {
        return function() {
            return nextValue++;
        };
    }
    alert(makeNumberSequenceGenerator(10).nextValue().nextValue());
  17. Complete the return statement in the function below:

    function isFalseBooleanValue(bool) {
        // return...
    }
  18. What's accomplished by using this construct:

    (function() {
        for (var i=0 ; i<10 ; i++) {
            alert(i);
        }
    })();

    instead of just:

    for (var i=0 ; i<10 ; i++) {
        alert(i);
    }
  19. The below code is added to an existing website (in an external Javascript file), causing some unexpected effects. What's the problem?

    window.onload = function() {
        document.write("Hello, world!");
    };
  20. The below code doesn't work as expected. What could be wrong?

    for (var i=0 ; i<10 ; i++) {
        var button = document.createElement("button");
        button.onclick = function() {
            alert("You clicked button number "+i);
        };
        document.body.appendChild(button).appendChild(document.createTextNode("Button "+i));
    }
  21. The below code doesn't work as expected. What could be wrong? (Assuming that elements with a class of 'button' receive a suitable styling)

    for (var i=0 ; i<10 ; i++) {
        document.body.innerHTML += "<div class='button' id='button"+i+"'></div>";
        document.getElementById("button"+i).onclick = function() {
            alert("You clicked button number "+this.id.replace(/^button/, ""));
        };
    }
  22. How can this function be improved?

    function removeLeadingAndTrailingWhitespaceFromString(str) {
        return str.replace(/(^\s+)|(\s+$)/ig, "");
    }
  23. What seems to be the problem with the below code?

    function StateMachine(initialState) {
        this.state = initialState || 'foo';
        return {
            transition: function() {
                this.state = {foo:'bar', bar:'quux', quux:'foo'}[this.state];
                return this;
            }
        };
    }
    var sm = new StateMachine();
    alert(sm.transition().transition().state);
  24. Why doesn't the below code work as expected? (Assuming Javascript 1.6 support)

    var isOdd = function(n) {return n&1;},
        isDivisibleByThree = function(n) {return !(n%3);},
        addOne = function(n) {return n+1;};
    alert([1,2,3,4,5,6,7].map(addOne).filter(isOdd && isDivisibleByThree).length);
  25. Why doesn't the below code alert "foobar" as expected?

    function StringBuffer(initialStr) {
        this.append(initialStr);
    }
    StringBuffer.prototype = {
        items: [],
        append: function(str) {
            this.items[this.items.length] = str instanceof StringBuffer ? str.toString() : str;
            return this;
        },
        toString: function() {
            return this.items.join("");
        }
    };
    alert(new StringBuffer("foo").append(new StringBuffer("bar")).toString());
  26. Rename f , a , and b to something more suitable:

    function f(a, b) {
        return function() {
            return a.apply(b, arguments);
        };
    }
  27. Why doesn't the below function work as expected?

    var isUndefinedOrNull = function(obj) {
        return /^(?:undefined|null)$/.test(typeof obj);
    };
  28. Why doesn't the following function work?

    function printZeroToNinetyNine() {
        for (var i = 0; i < 100; i += 1) {
            setTimeout(function () {
                console.log(i);
            }, 0);
        }
    }
  29. What is the output of the following function?

    function delayedPrint() {
        for (var i = 0; i < 100; i += 1) {
            (function (value) {
                setTimeout(function () {
                    console.log(i);
                }, 1000 * value);
            }(i));
        }
    }
  30. What is the output of the following piece of code?

    function createObject(name, value) {
        var returnObject = {};
        returnObject[name] = value;
        returnObject['addTo' + name] = function () {
            return value += 1;
        };
        return returnObject;
    }
    var obj = createObject('Property', 100);
    console.log(obj.Property);
    console.log(obj.addToProperty());
    console.log(obj.Property);
  31. Which of the following regular expressions can be used to find all occurrences of two-letter words in a string?

  32. Why doesn't the following regular expression work?

    function hasANumber(value) {
        return /^.*[0-9]*.*$/.test(value);
    }
  33. What does it mean when a function or feature is referred to as "asynchronous"?

  34. How can one ensure that a series of asynchronous calls are invoked in the correct order?

  35. Below is a function for executing asynchronous tasks in parallel. Why doesn't it work as expected?

    function doInParallel(tasks, cb) {
        var numTasks = tasks.length;
        tasks.forEach(function (task) {
            task();
            numTasks -= 1;
            if (numTasks === 0) {
                cb();
            }
        });
    }
    doInParallel([...], function () {
        // Execute only when tasks are complete
    });
  36. What does the `new` operator do when used in conjunction with a function call?

  37. Given the below piece of code, what should `obj.value` be set to in order for the if-condition to be true?

    var obj = {};
    
    obj.value = ???;
    
    if (obj.value === obj.value.value.value) {
    }
  38. Given the below code, which of the following is true:

    var a = '',
        b = '',
        c = {value1: a, value2: b},
        d = {value2: b, value1: a};
  39. Which of the following can set the background color of a DOM element to red?

    var element = document.getElementById('my-element');

  40. Which of the following is an acceptable way to add a click event handler to a DOM element?

    var element = document.getElementById('my-element');

Thursday 3 April 2014

search a text in nested array dynamically in mongoDB nodeJs

db.collectionName.aggregate({"$unwind": "$rootColumn"}, {"$match": {"fieldToSearchOn": new RegExp(var)}}, {"$project": {"_id": 0, "fieldToSearchOn": 1}})

Wednesday 2 April 2014

Using LIKE on nested array in mongoDB using nodeJS

db.collectionName.aggregate({"$unwind": "$nestedRootColumn"}, {"$match": {"columnToSearchOn":/^text/i}}, {"$project": {"_id": 0, "columnToSearchOn": 1}})

find the sum in mongoDB using nodejs

 db.collectionName.aggregate([{$match: {whereColumn: value}}, {$group: {_id: "$fieldToGroup", "total_budget": {$sum: "$column.amount"}}}], function(err, sum) {
console.log(sum[0].total_budget);
});

find the average in nested collection in mongoDB using nodejs

db.collectionName.aggregate([{$match: {"whereColumn": whereCondition}}, {$unwind: '$NestedcolumnToWorkOn}, {$group: {_id: null, "avg": {$avg: "$NestedcolumnToWorkOn.fieldName"}}}], function(err, average) {
console.log(average[0].avg);
});