Adăugarea de JavaScript particularizat la un formular

Notă

Începând cu 12 octombrie 2022, portalurile Power Apps sunt Power Pages. Mai multe informații: Microsoft Power Pages este acum disponibil în general (blog)
În curând vom migra și vom îmbina documentația portalurilor Power Apps cu documentația Power Pages.

Și înregistrările de pași din formularul de bază, dar și cele din formularul cu mai mulți pași conțin un câmp numit JavaScript particularizat, care poate fi utilizat pentru a stoca codul JavaScript ce vă permite să extindeți sau să modificați afișarea vizuală sau funcționalitatea unui formular.

Blocul personalizat de cod JavaScript va fi adăugat în partea de jos a paginii, chiar înainte de elementul etichetă de formular de închidere.

Câmpuri Formular

Identificatorul de intrare HTML al unui câmp de tabel este setat la numele logic al atributului. Selectarea unui câmp, setarea valorilor sau alte manipulări pe client, cu jQuery.

$(document).ready(function() {
   $("#address1_stateorprovince").val("Saskatchewan");
});

Important

Adăugarea unei coloane de alegere la formularul proiectat pe bază de model, pentru a fi utilizată într-o etapă de formular cu mai mulți pași sau într-un formular de bază, va apărea pe pagina portalului drept control de server vertical. Utilizarea JavaScript particularizat pentru a adăuga valori suplimentare la control va avea ca rezultat un mesaj „Argument de postback sau de apel invers nevalid” pe pagina de trimitere.

Validarea suplimentară a câmpului pe partea clientului

Uneori, poate fi necesar să particularizați validarea câmpurilor din formular. Acest exemplu impune ca utilizatorul să specifice un e-mail numai în cazul în care un alt câmp pentru „metoda preferată de contact” este setat la E-mail.

Notă

Validarea câmpului pe partea clientului nu este acceptat într-o subgrilă.

if (window.jQuery) {
   (function ($) {
      $(document).ready(function () {
         if (typeof (Page_Validators) == 'undefined') return;
         // Create new validator
         var newValidator = document.createElement('span');
         newValidator.style.display = "none";
         newValidator.id = "emailaddress1Validator";
         newValidator.controltovalidate = "emailaddress1";
         newValidator.errormessage = "<a href='#emailaddress1_label' referencecontrolid='emailaddress1 ' onclick='javascript:scrollToAndFocus(\"emailaddress1 _label\",\" emailaddress1 \");return false;'>Email is a required field.</a>";
         newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form
         newValidator.initialvalue = "";
         newValidator.evaluationfunction = function () {
            var contactMethod = $("#preferredcontactmethodcode").val();
            if (contactMethod != 2) return true; // check if contact method is not 'Email'.
            // only require email address if preferred contact method is email.
            var value = $("#emailaddress1").val();
            if (value == null || value == "") {
            return false;
            } else {
               return true;
            }
         };

         // Add the new validator to the page validators array:
         Page_Validators.push(newValidator);

      });
   }(window.jQuery));
}

Validare generală

După ce se face clic pe butonul Următorul/Trimiteți, se execută o funcție numită entityFormClientValidate. Puteți extinde această metodă pentru a adăuga o logică de validare personalizată.

if (window.jQuery) {
   (function ($) {
      if (typeof (entityFormClientValidate) != 'undefined') {
         var originalValidationFunction = entityFormClientValidate;
         if (originalValidationFunction && typeof (originalValidationFunction) == "function") {
            entityFormClientValidate = function() {
               originalValidationFunction.apply(this, arguments);
               // do your custom validation here
               // return false; // to prevent the form submit you need to return false
               // end custom validation.
               return true;
            };
         }
      }
   }(window.jQuery));
}

Consultați și