The KeyOpValueField makes it easy to build a search form from an existing inputEx definition
var field1 = new Y.inputEx.KeyOpValueField({
parentEl: 'container1',
availableFields: [
{type: 'string', name: 'lastname', label: 'Lastname' },
{type: 'string', name: 'firstname', label: 'Firstname' },
{type: 'select', name: 'gender', label: 'Gender', choices: ["Mr","Mrs","Ms"] }
]
});
var button1 = inputEx.cn('button', null, null, 'getValue()');
Y.one('#container1').appendChild(button1);
Y.one(button1).on('click', function() { alert( Y.JSON.stringify(field1.getValue())); });
Here is a search form with multiple conditions
inputEx({
type: 'list',
parentEl: 'container2',
elementType: {
type: 'keyopvalue',
availableFields: [
{type: 'string', name: 'lastname', label: 'Lastname' },
{type: 'string', name: 'firstname', label: 'Firstname' },
{type: 'select', name: 'gender', label: 'Gender', choices: ["Mr","Mrs","Ms"] }
]
}
});
Two more options are available for this field: "operators" and "operatorLabels"
var field3 = new Y.inputEx.KeyOpValueField({
parentEl: 'container3',
availableFields: [
{type: 'string', name: 'lastname', label: 'Lastname' },
{type: 'string', name: 'firstname', label: 'Firstname' },
{type: 'select', name: 'gender', label: 'Gender', choices: ["Mr","Mrs","Ms"] }
],
operators: ["=","!="],
operatorLabels: ["equals", "different"]
});
var button3 = inputEx.cn('button', null, null, 'getValue()');
Y.one('#container3').appendChild(button3);
Y.one(button3).on('click', function() { alert( Y.JSON.stringify(field3.getValue())); });