पुष्टि करने वाले प्रोग्राम

पुष्टि करने वाला ऐसा फ़ंक्शन होता है जो फ़ील्ड की नई वैल्यू लेता है और फिर इस पर काम करता है इसे. ये किसी फ़ील्ड को पसंद के मुताबिक बनाने का आसान तरीका हैं. इनकी मदद से फ़ंक्शन, जब किसी फ़ील्ड की वैल्यू में बदलाव हो, इनपुट में बदलाव करें या वैल्यू को सीमित करें स्वीकार किए जाते हैं.

कुछ सामान्य उदाहरण:

  • किसी टेक्स्ट फ़ील्ड को सिर्फ़ अक्षर स्वीकार करने तक सीमित करना.
  • टेक्स्ट फ़ील्ड खाली नहीं होना चाहिए.
  • आने वाले समय की तारीख सेट करना.
  • ड्रॉपडाउन के आधार पर ब्लॉक के आकार में बदलाव करना.

पुष्टि करने वाले प्रोग्राम के टाइप

पुष्टि करने वाले लोग अलग-अलग समय पर पुष्टि करते हैं. यह इस बात पर निर्भर करता है कि वे किस तरह के पुष्टि करने वाले प्रोग्राम से जुड़े हैं हैं.

क्लास वैलिडेटर, फ़ील्ड टाइप की क्लास की परिभाषा का हिस्सा होते हैं और ये आम तौर पर, इसका इस्तेमाल फ़ील्ड के ज़रिए मंज़ूर की गई वैल्यू के टाइप को सीमित करने के लिए किया जाता है (जैसे कि संख्या फ़ील्ड में सिर्फ़ संख्या वाले वर्ण स्वीकार किए जाते हैं). क्लास वैलिडेटर सभी वैल्यू पर चलाए जाते हैं फ़ील्ड को पास किया जाता है (इसमें कंस्ट्रक्टर को पास की गई वैल्यू शामिल है).

क्लास वैलिडेटर के बारे में ज़्यादा जानकारी के लिए, क्लास की पुष्टि करने वाला प्रोग्राम लागू करना सेक्शन में जाएं.

लोकल वैलिडेटर, फ़ील्ड बनाते समय तय किए जाते हैं. लोकल कैंपेन वैलिडेटर, फ़ील्ड को दी गई सभी वैल्यू पर चलता है. हालांकि, यह वैल्यू सिर्फ़ फ़ील्ड पर दी जाती है कंस्ट्रक्टर के साथ. इसका मतलब है कि ये इन डिवाइसों पर चलते हैं:

  • एक्सएमएल में मौजूद वैल्यू.
  • setValue में पास की गई वैल्यू.
  • setFieldValue में पास की गई वैल्यू.
  • उपयोगकर्ता ने वैल्यू बदली हैं.

क्लास वैलिडेटर को लोकल वैलिडेटर से पहले चलाया जाता है, क्योंकि वे ऐसे काम करते हैं गेटकीपर. पास होने से पहले वे पक्का करते हैं कि वैल्यू सही तरह की हो चालू करें.

वैल्यू की पुष्टि के क्रम और वैल्यू के बारे में ज़्यादा जानकारी पाने के लिए सामान्य देखें.

लोकल वैलिडेटर को रजिस्टर करना

पुष्टि करने वाले लोकल सिस्टम को दो तरीकों से रजिस्टर किया जा सकता है:

  • किसी फ़ील्ड के कंस्ट्रक्टर में सीधे जोड़ा गया.
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);
  }
};

ऊपर दिए गए किसी भी तरीके को एक्सटेंशन, JSON फ़ॉर्मैट पर काम करने के लिए ज़रूरी है.

फ़ील्ड की वैल्यू बहुत अलग-अलग हो सकती है. यह इस बात पर निर्भर करता है कि फ़ील्ड किस तरह का है पुष्टि की गई (उदाहरण के लिए, नंबर वाले फ़ील्ड में नंबर सेव होगा, जबकि टेक्स्ट इनपुट फ़ील्ड में एक स्ट्रिंग स्टोर करेगा) ताकि आप अपने विशिष्ट पुष्टि करने वाला प्रोग्राम बनाने से पहले, इस फ़ील्ड में.

रिटर्न वैल्यू

पुष्टि करने वाले प्रोग्राम की रिटर्न वैल्यू से यह तय होता है कि फ़ील्ड आगे क्या करेगा. यह लीजिए तीन संभावितएँ हैं:

सामान लौटाने की बदली गई वैल्यू

कोई बदला गया या अलग वैल्यू, जो फिर फ़ील्ड की नई वैल्यू बन जाती है. इसका इस्तेमाल अक्सर वैल्यू को हटाने के लिए किया जाता है, जैसे कि ट्रेलिंग को हटाकर खाली सफ़ेद जगह शामिल करें.

बदलाव की पुष्टि करने वाले प्रोग्राम का उदाहरण:

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

बदलाव करने वाले वैलिडेटर के साथ टेक्स्ट इनपुट फ़ील्ड

कोई रिटर्न वैल्यू नहीं

शून्य का मतलब है कि दी गई वैल्यू अमान्य है. ज़्यादातर मामलों में फ़ील्ड इनपुट वैल्यू को अनदेखा कर दें. सटीक व्यवहार, इस फ़ील्ड के doValueInvalid_ अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है फ़ंक्शन का इस्तेमाल करता है.

बिना वैल्यू वाले वैलिडेटर का उदाहरण:

// 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;
};

शून्य वाले वैलिडेटर वाला टेक्स्ट इनपुट फ़ील्ड

सामान लौटाने की ऐसी वैल्यू जिसके बारे में जानकारी नहीं है

अनिर्धारित (या कोई रिटर्न स्टेटमेंट नहीं है) या इनपुट वैल्यू, जिसका मतलब है कि इनपुट वैल्यू, फ़ील्ड की नई वैल्यू बन जानी चाहिए. पुष्टि करने वाले इस तरह के प्रोग्राम आम तौर पर, लिसनर के तौर पर काम करते हैं.

लिसनर वैलिडेटर का उदाहरण:

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

एक बार फिर से ध्यान दें कि डिसप्ले टेक्स्ट, फ़ील्ड के वैल्यू.

इसका मान

पुष्टि करने वाले this के अंदर फ़ील्ड को दिखाया गया है, ब्लॉक को नहीं. अगर आपको पुष्टि करने वाले प्रोग्राम के अंदर के ब्लॉक को ऐक्सेस करने के लिए getSourceBlock फ़ंक्शन का इस्तेमाल करें. आप आप यह भी इस्तेमाल कर सकते हैं बाइंड फ़ंक्शन का इस्तेमाल करें.

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);
  }
};

सैंपल कोड, जिसका इस्तेमाल किया जा रहा है बाइंड करें:

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);
  }
};