Last Updated: 29 May 2020 07:47 by ADMIN
Created by: Rick
Comments: 3
Category: MaskedTextBox
Type: Bug Report

So i'm trying to use a MaskedTextBox for saving a phone number, but if the string only exists of digits and no other characters in the initial value it will always remove any leading zeros.

This gives me problems for when edit forms where a phone number of 0771234567 is loaded but 771234567 is displayed instead. If someone then clicks save all changes the leading zero is removed. I don't want it just for display either or always put a zero in front because it can also be multiple zeros depending on exit code used e.t.c. (the numbers will be used to call people they are not just for display.)

2.    $Phonenumber = new \Kendo\UI\MaskedTextBox('Phonenumber');
3.    $Phonenumber ->value('0003333');
5.    echo $Phonenumber ->render();

The code above will display '3333' as initial value instead of the desired '0003333', if i use '000test' instead then it works as intended and display '000test'

I don't understand the advantage of always removing leading zeros in this situation, i'd rather do this myself using php if neccesary.

I'm hoping i'm just missing something very simple, no kind of mask seems to help.

The example below will display 3333 as result, where if i would use 000test instead of 0003333 it would show 000test
The example below will display 3333 as result, where if i would use 000test instead of 0003333 it would show 000test
Last Updated: 04 Nov 2019 15:41 by ADMIN

Dear support team


I have an interesting phenomenon. We are using a MultiSelect widget with remote data binding. In theory, the data looks like this:

Key: 099

Value: Test1

Key: 100

Value: Test2


I can select all values just fine and they are posted to the form on the receiving end. When reloading the form, we pre-populate the selected items, by calling ->setValue() with an Array of strings: 099,100.

However, the generated Javascript code for the multiselect will change that to [99,100]. So the 099 will not get selected when shown.

Is this something I can avoid? Do I need to specify anything special for the Key column (so far I have only specified the name of the field and marked it as an IDcolumn).


Here is the generated javascript code, as you can see, the value is set to 99, but gets passed in the PHP array as '099':

 <select id="berufsgruppeMultiSelect[]" name="berufsgruppeMultiSelect[]" style="width:500px;"></select><script>jQuery(function(){jQuery("#berufsgruppeMultiSelect\\[\\]").kendoMultiSelect({"dataSource":{"type":"odata-v4","serverFiltering":true,"serverSorting":true,"serverPaging":true,"transport":{"read":{"url":function(data) {return "'687')/CTVRecords?lang=en&$select=V_Long&SESSIONID=" + encodeURIComponent(cookieSessionID) + "";},"contentType":"application\/json;odata.metadata=minimal","dataType":"json","type":"GET"},"parameterMap":function(options, type) {
if (type === 'read') {
if (options.filter) {
for(var index in options.filter.filters) {
var Filter = options.filter.filters[index];
Filter.value = boolean2string(Filter.value);

if ($.isArray(Filter.filters)) {
for(var arrayIndex in Filter.filters) {
var ArrayFilter = Filter.filters[arrayIndex];
ArrayFilter.field = 'tolower(' + ArrayFilter.field + ')';
ArrayFilter.value = ArrayFilter.value.toLowerCase();
} else {
Filter.field = 'tolower(' + Filter.field + ')';
Filter.value = Filter.value.toLowerCase();
} else {
                    options.filter = {logic: 'and', filters: [{field: 'tolower(Language)', operator: 'contains', value: 'en'}]};
if (options.sort) {
var sortCount = 0;
for(var index in options.sort) {
var Sorter = options.sort[index];
sortCount = 1;

if (typeof sortCount === 'undefined' || sortCount === 0) {
options.sort = [{field: 'V_Long', dir: 'asc'}];
return['odata-v4'].parameterMap(options, type);}
},"schema":{"model":{"fields":[{"field":"Key"},{"field":"V_Long"}],"id":"Key"}}},"dataTextField":"V_Long","dataValueField":"Key","value":[99],"valuePrimitive":true,"filtering":function (e) {
            if (e.filter) {
                var value = e.filter.value
                var newFilter = {
                    logic: 'and',
                    filters: [
                        { field: 'tolower(Language)', operator: 'contains', value: 'en' },
                            logic: 'or',
                            filters: [
                                { field: 'id', operator: 'contains', value: value },
                                { field: 'V_Long', operator: 'contains', value: value }
        },"placeholder":"alle Berufsgruppen","itemTemplate":"#: id# (#: V_Long#)","tagTemplate":"#: id# (#: V_Long#)"});});</script>


Thank you for your advice.