2017-05-26 3 views
0

Mise à jour avec le nouveau code.EGL: sélectionner par programme le contenu de dojocurrencytextbox

J'ai déjà cherché sur ce forum mais je ne trouve pas la solution à mon problème (peut-être que j'utilise les mauvais critères de recherche). Ce que je cherche est un moyen de sélectionner le contenu d'une DojoCurrencyTextbox via du code (programmattiquement). J'ai créé un programme de test, et lorsque je clique sur la zone currencytext, le contenu est sélectionné (via la propriété selectonClick). Et aussi quand j'appuie sur un bouton, je peux mettre l'accent sur la zone currencytext, mais il me semble impossible de sélectionner le contenu, pour le DOjoTextField cela fonctionne, mais pas pour DojoCurrencyTextBox.

J'espère que quelqu'un peut me dire comment je peux obtenir cette fonctionnalité.

Merci d'avance.

Le TestCode J'utilise est le suivant:

package dmg.zz_testruben; 

// RUI Widget 

import com.ibm.egl.rui.widgets.GridLayout; 
import com.ibm.egl.rui.widgets.GridLayoutData; 
import egl.ui.rui.Event; 
import dojo.widgets.DojoButton; 
import dojo.widgets.DojoCurrencyTextBox; 
import dojo.widgets.DojoTextField; 


handler TestSelectCurrencyTextBox type RUIWidget {targetWidget = ui, onConstructionFunction = start} 
    ui GridLayout{ columns = 3, rows = 4, cellPadding = 4, children = [txtInput1, btnInput1, btnInput1b, txtInput2, btnInput2, btnInput2b] }; 

    txtInput1 DojoTextField{layoutData = new GridLayoutData{row=1, column=1}, suppressChangeEvent = true, selectOnClick = true, text = "abc"}; 
    btnInput1 DojoButton{layoutData = new GridLayoutData{row=1, column=2}, text = "select", onClick ::= btnInput1_onClick}; 
    btnInput1b DojoButton{layoutData = new GridLayoutData{row=1, column=3}, text = "focus", onClick ::= btnInput1b_onClick}; 
    txtInput2 DojoCurrencyTextbox{layoutData = new GridLayoutData{row=2, column=1}, suppressChangeEvent = true, selectOnClick = true, text = "1,23"}; 
    btnInput2 DojoButton{layoutData = new GridLayoutData{row=2, column=2}, text = "select", onClick ::= btnInput2_onClick}; 
    btnInput2b DojoButton{layoutData = new GridLayoutData{row=2, column=3}, text = "focus", onClick ::= btnInput2b_onClick}; 

    function start() 
    end 



    private function btnInput1_onClick (e Event in) 
     txtInput1.children[2].children[1].select(); 
    end 

    private function btnInput2_onClick (e Event in) 
     txtInput2.children[2].children[1].select(); 
    end 

    private function btnInput1b_onClick (e Event in) 
     txtInput1.focus(); 
    end 

    private function btnInput2b_onClick (e Event in) 
     txtInput2.focus(); 
    end 


end 

Répondre

0

Appel select sur focusNode de CurrencyTextBox:

require([ 
 
    "dojo/on", 
 
    "dijit/form/CurrencyTextBox", 
 
    "dojo/domReady!" 
 
], function(on, CurrencyTextBox) { 
 
    var ctb = new CurrencyTextBox({ 
 
    value: "54.12", 
 
    constraints:{fractional:true}, 
 
    currency:'USD', 
 
    invalidMessage:'Invalid amount. Cents are required.' 
 
    }).placeAt("result"); 
 
    
 
    ctb.focusNode.select(); 
 
});
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.12.1/dojo/dojo.js"></script> 
 
<div id="result"></div>

+0

Quel langage de programmation est-ce? Ce n'est pas EGL autant que je puisse le voir, car dans EGL il n'y a pas de focusNode membblariable pour un CurrencyTextBox. Pouvez-vous s'il vous plaît me donner plus d'explications. –

+0

C'est javascript - la bibliothèque dojo est écrite dessus. Dojo API ne mentionne pas 'focusNode', mais c'est une référence au noeud d'entrée. Je suppose que vous devriez être en mesure d'appeler 'txtInput2.focusNode.select();' – barbsan

+0

Merci pour l'explication. Lorsque je modifie le code dans la fonction btnInput2_onClick à la suivante: txtInput2.children [2] .children [1] .select(); (Cela pointe maintenant vraiment vers le noeud d'entrée) alors qu'une sélection ne fait que focaliser la boîte d'entrée, elle ne sélectionne pas le contenu. –