2016-04-12 5 views
0

Ich habe einen ausgewählten Dojo-Controller.Ändern Sie die Popup-Nachricht in einem erforderlichen Feld

<select dojoType="dijit.form.Select" data-dojo-attach-point="drpSomthing" id="drpSomthing" 
       data-dojo-props="regExp:'\\d{5}', required:true, invalidMessage:'Invalid zip code.'"></select> 

Dies ist ein Pflichtfeld. Ich möchte die Popup-Nachricht von "Dieser Wert ist erforderlich" zu etwas anderem ändern. Ich habe versucht, die "invalidMessage", "promptMessage" und die "Missing message" zu verwenden, aber es hat nicht geholfen. Hacke ich die Popup-Nachricht?

Grüße

Kobi

Antwort

1

dijit.form.Select erhalten die Nachricht aus den nls: i18n.getLocalization("dijit.form", "validate", this.lang).missingMessage und nicht von einer lokalen Eigenschaft.

Diese im postMixInProperties Methode von dijit.form.Select geschieht (siehe https://github.com/dojo/dijit/blob/master/form/Select.js#L364)

Sie zwei Dinge tun:

  • nach dem dijit.form.Select erstellt wird, aktualisieren ihre Eigenschaft _missingMsg

wie diese :

mySelect._missingMsg = 'what ever message you want'; 

(aber das ist schmutzig, wie Sie eine private Eigenschaft ändern)

  • oder, sauberere Weg: Sie ein neues Widget erstellen, erstreckt dijit.form.Select, wo Sie die postMixInProperties neu definieren und verwenden Sie diese neue Widget anstelle von dijit.form.Select

wie folgt aus:

define([ 
 
\t "dojo/_base/declare", 
 
\t "dijit/form/Select" 
 
], function(declare, Select) { 
 
    return declare([Select], { 
 
     postMixInProperties: function(){ 
 
\t \t \t // summary: 
 
\t \t \t // \t \t set the missing message 
 
\t \t \t this.inherited(arguments); 
 
\t \t \t this._missingMsg = 'What ever message you want'; 
 
\t \t } 
 
    }); 
 
});

Verwandte Themen