Formatting Dojo TextBox on the fly - dojo

I want to format the value of any type of TextBox, based on a pattern, on the fly. So basicly I mean when the user is typing '123' and my pattern is '0.00' it has to be converted directly to '1.23'. I know I can do this with the onChange function, but I guess there is already a Dojo based solution(not the onChange of a TextBox). Could someone tell me which property I have to use?
I've tried to use constraints and filter, but both only work after a blur event.

Widgets fire events on themselves that emulate the events of their DOM elements. For example a text box dijit will fire a change event on the object called "change".
There is also an replaceable function called "format" which, as the name suggests, formats the value of the text box.
see: http://dojotoolkit.org/api/?qs=1.9/dijit/form/_TextBoxMixin
As such you can do:
widget.format = function(value, constraints){ //my formatting fnc}
widget.on('change', function(){
widget.format();
});

Related

Method from a data bind (DevExpress Report)

I am creating a label report for bank check printing. I would like to know which component of the toolbox I can use to create a method (which I already have) to convert the numeric value to value in full.
Follow the design screen.
Report
I think you could place an XRLabel control onto the report for the text value and handle its BeforePrint event to invoke your method for converting the numeric value to text.

Binding options dropdown filtering with textbox value in Google App Maker

Good day to all,
I need your help to binding an dropdown in Google App Maker.
I have 2 datasources, one for value and other for options and names. The problem is when I try to filter the dropbox with a textbox value.
in TextBox's onValueChange I put this code but it does not work.
var item = widget.parent.descendants;
app.datasources.Prycts_Cmpns.query.clearFilters();
app.models.FCTRSRCBDS.datasources.Prycts_Cmpns.query.filters.s_AliasCompany._contains=widget.value;
app.models.FCTRSRCBDS.datasources.Prycts_Cmpns.load();
the next code is the datasources options,value and names of the dropdown:
How i can filter this dropdown with the filter?
Thxs
I have a feeling, that
User enters some filter in TextBox
In onValueChange you call clearFilters what wipes user's input
You load Prycts_Cmpns datasource with no filters
So to fix this you can check that the TextBox is bound to app.models.FCTRSRCBDS.datasources.Prycts_Cmpns.query.filters.s_AliasCompany._contains and simplify onValueChnage event handler to this
// at this point filter's value should be already set by binding
app.models.FCTRSRCBDS.datasources.Prycts_Cmpns.load();

dojo form submit on change of value

I have a dojo table container embedded within dojo form. I'm able to validate all dijits like textbox, combobox etc and submit the form. But what I need is, submit the form only when a value is changed i.e. if a textbox value is changed, submit the form else don't.
Add a hidden text input field which is empty while loading page. Then After you make a change in your text field check the content in the hidden text field and your respective text field if they are same then don't submit the form.
Dojo input fields maintain the original value in the private attribute of '_resetValue'. Before submitting the form, you can check whether _resetValue is different from .get('value') and submit the data..
If all the attributes are under the Table container, you can fetch the children of the table containers and verify using array.every() function..
var unmodified = array.every(container.getChildren(), function(widget){
return widget._resetValue == widget.get('value');
});

How to save Id for dijit.form.ComboBox

I'm writing my first dijit control for EPiServer. In my template I am using the dijit.form.ComboBox.
I have attached an event handler to the "onChange" event like so:
postCreate: function () {
// call base implementation
this.inherited(arguments);
// Init textarea and bind event
this.inputWidget.set("intermediateChanges", this.intermediateChanges);
this.inputWidget.set("store", this.store);
this.connect(this.inputWidget, "onChange", this._onInputWidgetChanged);
},
Then in my event handler I have:
_onInputWidgetChanged: function (e) {
alert(e.id);
this._updateValue(value);
},
My issue is that as with a typical dropdown list, I want to store the Value rather than the Text. The options in my combobox look like so:
Value | Text
1 | "Test"
2 | "A different test"
The problem is that the value passed into the _onInputWidgetChanged handler is always the text value of the combobox i.e. "Test" or "A different test"
How can I get access to the Value instead? As I said, this is the first time I have ever worked with dojo and dijit so I may be missing something fundamental here.
Thanks in advance
Al
The thing about ComboBox is that its value is not required to be an entry in the drop-down menu (and thus, not guaranteed to be one either). Think of it as a textbox with autosuggest - users can use the menu to expedite the process, but the value of the textbox is freeform and is reported as whatever the user types into it.
If you want users to be required to choose an entry from the menu, you should be using FilteringSelect instead, which will report the associated store item's ID (or associated option tag's value) as its value. As opposed to the free-form nature of ComboBox, FilteringSelect can be thought of as a menu with type-ahead functionality.

Hidden model-bound values in view not getting passed to controller when populated manually

I'm using the KendoUI AutoComplete for a number of look-ups on a custom editor template that pop-ups off a grid for new rows and edits. The Kendo AutoComplete does have a DataTextField property and does not DataValueField property like a DropDownList would. So, I found I am able to get the Value of the selected item in the AutoComplete with a little Javascript and iterrogating the "dataItem" object in the select handler. And I put that value into a "SelectedID" field declared with #Html.HiddenFor(model => model.SelectedID) on the select event.
Now, when I do a save from the view and have a break point on my controller action that captures the incoming model, all those ID values where i set the value manually are empty/null/blank. I've checked the DO and have done "console.log" to read out the values of the hidden fields before the post and the values are populated. I've changed the datatypes (strings, guids, etc) and I've changed the Html Helper type as well from a HiddenFor to a EditorFor just to make sure the values are indeed there.
So i think this is a problem when the values of an element that are part of the model are populated in a "manual" fashion. The text of the AutoCompletes comes through if I bind that to a field on the model as well. Any date fields, checkboxes and free-form text fields come through as well. It seems it is just values of model bound fields where I set the values manually that don't make it over the "wire". Any thoughts? Solutions? I know the Selected Value is accessible ... it's just a matter of properly getting it into the "HiddenFor" fields.