Can't remove the value entered in the djFilter

2019-08-09 11:39发布

问题:

I am using the djFilteringSelect control to show values in a dropdown as user type a value. The lookup and typehead is working fine. The user type a letter and the dropdown allow the user to select a value which is then displayed in the dropdown field.

If the user now decide to remove the value first selected so that the combobox is empty and leave the field, then the first value in the list is now automatically filled in.

The consequence of this is that if the user have added a value there is no way to remove the value and leave the box emtpy.

I am using required=false for both the control and the dojo attribute but it does not seem to help. There are also a few other djFilteringSelect attributes I have tried like "Autocomplete" and "trim" but it does not work

Here is the code

<xe:djFilteringSelect id="test" type="select" store="jsondata" searchAttr="data" required="false" labelType="html" invalidMessage="Not valid">
        <xe:this.dojoAttributes>
            <xp:dojoAttribute name="required" value="false"></xp:dojoAttribute>
        </xe:this.dojoAttributes>
</xe:djFilteringSelect>

Initally the field is not required, but if the user have entered a value it is required.

My question is if there a way to prevent the djFilteringSelect control to always populate the field if I have previously added a value

回答1:

I found someone who solved this in another stack overflow topic, by creating an empty entry in my data store. but I could not get this to work

Dojo: Select of empty value for FilteringSelect while required=false



回答2:

I do this quite a lot. Right now I don't have a working sample to show you (since I moved to bootstrap - and have to code the selects by manually adding select2 controls) but something like this should do it...

I add an "empty" value at the top of my select - and that seems to work no matter whether I am using a combobox, djCombobox or combobox with select2 from bootstrap. My markup typically looks like:

<xp:comboBox id="inputLocationSelector" value="#{User.catchListType}" disableClientSideValidation="true">
    <xp:selectItem itemLabel="(none)" itemValue=""></xp:selectItem>
    <xp:selectItems>
        <xp:this.value><![CDATA[${Configuration.meta.listLocationTypeOptions}]]></xp:this.value>
    </xp:selectItems>
</xp:comboBox>

Then you could specify "(none)", "All" or " " for the "not-selected" value depending on your needs.

Validation is a different thing so just specifying "required=false" does not give you the "empty" value.

/John