Your nesting syntax is all bungled up.
Your code with my comments:
rules: {
property_type: {
required: true,
rentflat: { // <-- does not go inside of 'property_type'
// depends function belongs inside of a rule
depends: function () {
return $('#item select[name="property_type"]').val() === 'rent';
}
},
saleflat: { // <-- does not go inside of 'property_type'
// depends function belongs inside of a rule
depends: function () {
return $('#item select[name="property_type"]').val() === 'sale';
}
}
},
messages: { // <-- does not go inside of 'rules' option
property_type: "offer is required!",
rentflat: "rentflat is required!",
saleflat: "saleflat is required!"
}
}
1) You've incorrectly put messages
inside of rules
. They are siblings.
2) You've incorrectly put the rentflat
and saleflat
field:rule declarations inside of the property_type
field:rule declaration. Again, all field:rule declarations are siblings of each other so you cannot put one inside of another.
3) Your depends
function is correct. However, you did not assign the depends
function to a rule. Your depends
function needs to be the value of (inside of) the required
rule declaration.
The fixed version:
// this is the 'rules' option
rules: {
property_type: { // <-- field name
required: true // <-- rules
},
rentflat: { // <-- field name
required: { // <-- rules
// depends function inside of 'required' rule
depends: function () {
return $('#item select[name="property_type"]').val() === 'rent';
}
}
},
saleflat: { // <-- field name
required: { // <-- rules
// depends function inside of 'required' rule
depends: function () {
return $('#item select[name="property_type"]').val() === 'sale';
}
}
}
},
// this is the 'messages' option, sibling of 'rules' option
messages: {
property_type: "offer is required!",
rentflat: "rentflat is required!",
saleflat: "saleflat is required!"
}
Working version: http://jsfiddle.net/knLXp/