Strumenti di convalida

Uno strumento di convalida è una funzione che prende il nuovo valore dei campi e poi agisce li annotino. Sono un modo semplice per personalizzare un campo. Consentono di attivare quando cambia il valore di un campo, modifica l'input o limita i valori. sono accettabili.

Alcuni esempi comuni:

  • Limitare un campo di testo all'accettazione solo di lettere.
  • Richiedere che un campo di testo non sia vuoto.
  • Richiedere che una data sia nel futuro.
  • Modifica della forma di un blocco in base a un menu a discesa.
di Gemini Advanced.

Tipi di strumenti di convalida

Gli strumenti di convalida vengono eseguiti in momenti diversi a seconda del tipo di strumento di convalida .

Gli strumenti di convalida dei corsi fanno parte della definizione della classe di un tipo di campo e sono solitamente utilizzato per limitare il tipo di valore consentito dal campo (ad es. numero accettano solo caratteri numerici). Gli strumenti di convalida dei corsi vengono eseguiti su tutti i valori passati al campo (incluso il valore passato al costruttore).

Per ulteriori informazioni sugli strumenti di convalida dei corsi, vedi Implementare uno strumento di convalida della classe in Creazione di un campo personalizzato.

Gli strumenti di convalida locali sono definiti al momento della creazione di un campo. Locale vengono eseguiti su tutti i valori passati al campo, ad eccezione di quello trasmesso costruttore. Ciò significa che vengono eseguite su:

  • Valori contenuti nel file XML.
  • Valori passati a setValue.
  • Valori passati a setFieldValue.
  • Valori modificati dall'utente.

Gli strumenti di convalida dei corsi vengono eseguiti prima degli strumenti di convalida locali perché funzionano chi controlla. Si assicurano che il valore sia del tipo corretto prima di trasmettere su questa funzionalità.

Per ulteriori informazioni sulla sequenza di convalida dei valori e sui valori in generale, vedi Valori.

Registrazione di uno strumento di convalida locale

Gli strumenti di convalida locali possono essere registrati in due modi:

  • Aggiunto direttamente nel costruttore di un campo.
di Gemini Advanced.
Blockly.Blocks['validator_example'] = {
  init: function() {
    // Remove all 'a' characters from the text input's value.
    var validator = function(newValue) {
      return newValue.replace(/\a/g, '');
    };

    this.appendDummyInput()
        .appendField(new Blockly.FieldTextInput('default', validator));
  }
};
Blockly.Blocks['validator_example'] = {
  init: function() {
    // Remove all 'a' characters from the text input's value.
    var validator = function(newValue) {
      return newValue.replace(/\a/g, '');
    };

    var field = new Blockly.FieldTextInput('default');
    field.setValidator(validator);

    this.appendDummyInput().appendField(field);
  }
};

Entrambi i metodi precedenti possono essere aggregati in una estensione, per supportare il formato JSON.

Il valore del campo può essere molto diverso a seconda del tipo di campo convalidata (ad esempio, un campo numerico memorizza un numero, mentre un campo di immissione di testo memorizzerà una stringa), quindi è preferibile leggere la documentazione per il tuo prima di creare uno strumento di convalida.

Valori restituiti

Il valore restituito dello strumento di convalida determina l'azione successiva del campo. Là esistono tre possibilità:

Valore restituito modificato

Un valore modificato o diverso, che diventa il nuovo valore del campo. Questo viene spesso utilizzato per ripulire un valore, ad esempio rimuovendo il valore finale uno spazio vuoto.

Esempio di uno strumento di convalida della modifica:

// Remove all 'a' characters from the text input's value.
var validator = function(newValue) {
  return newValue.replace(/\a/g, '');
};

Campo di immissione testo con uno strumento di convalida che modifica

Valore restituito nullo

Null, significa che il valore specificato non è valido. Nella maggior parte dei casi, il campo ignora il valore di input. Il comportamento esatto è specificato dal valore-chiave doValueInvalid_ funzione.

Esempio di strumento di convalida Nulling:

// Any value containing a 'b' character is invalid.  Other values are valid.
var validator = function(newValue) {
  if (newValue.indexOf('b') != -1) {
    return null;
  }
  return newValue;
};

Campo di immissione testo con uno strumento di convalida dei valori null

Valore restituito non definito

Non definito (o nessuna istruzione di ritorno) o il valore di input, che indica che il valore di input deve diventare il nuovo valore del campo. Questi tipi di strumenti di convalida agiscono generalmente come ascoltatori di cambiamenti.

Esempio di strumento di convalida degli ascoltatori:

// Log the new value to console.
var validator = function(newValue) {
  console.log(newValue);
};

Ancora una volta, tieni presente che il testo visualizzato non riflette necessariamente la valore.

Valore di questo

All'interno di uno strumento di convalida, this si riferisce al campo, non al blocco. Per accedere al blocco all'interno di uno strumento di convalida usa la funzione getSourceBlock. Puoi utilizza anche funzione bind per impostare il contesto in cui viene richiamato lo strumento di convalida.

Codice campione utilizzando getSourceBlock:

Blockly.Blocks['colour_match'] = {
  init: function() {
    this.appendDummyInput()
        .appendField(new Blockly.FieldColour(
            null, this.validate
        ), 'COLOUR');
    this.setColour(this.getFieldValue('COLOUR'));
  },

  validate: function(colourHex) {
    this.getSourceBlock().setColour(colourHex);
  }
};

Codice campione utilizzando bind:

Blockly.Blocks['colour_match'] = {
  init: function() {
    this.appendDummyInput()
      .appendField(new Blockly.FieldColour(
          null, this.validate.bind(this)
      ), 'COLOUR');
    this.validate(this.getFieldValue('COLOUR'));
  },

  validate: function(colourHex) {
    this.setColour(colourHex);
  }
};