bootstrapValidator в XPages - PullRequest
       26

bootstrapValidator в XPages

0 голосов
/ 13 января 2019

У меня есть код ниже в моем XPage, однако он не работает для данного поля ipAddress, даже если он пуст, он не запрашивает никакой проверки, я также пытался с # {id: ipAddress}, он не работает , Я использую Notes 9 и Designer 9. Может ли кто-нибудь помочь мне с другим способом проверки полей в XPages с использованием функции bootstrapValidator.

     <?xml version="1.0" encoding="UTF-8"?>
            <xp:view xmlns:xp="http://www.ibm.com/xsp/core" id="testid">
            <xp:this.resources>
                <xp:styleSheet href="/bootstrap.css"></xp:styleSheet>
                <xp:styleSheet href="/bootstrapValidator.min.css"></xp:styleSheet>
                <xp:script src="/jquery-1.11.1.js" clientSide="true"></xp:script>
                <xp:script src="/bootstrap.min.js" clientSide="true"></xp:script>
                <xp:script src="/bootstrapValidator.js" clientSide="true"></xp:script>
                <xp:script src="/jquery.mask.min.js" clientSide="true"></xp:script>
            </xp:this.resources>
            <xp:form id="maskForm">
          <div class="col-lg-5">
      <xp:inputText id="ipAddress" title="ipAddress">
        </xp:inputText>
        </div>
            </xp:form>
            <xp:scriptBlock>
                <xp:this.value><![CDATA 

var test ="view:_id1";
        var fieldvalue="#view:_id1:_id4:_id142:_id143:callback1:idLocation";
      XSP.addOnLoad( function() {
        $("#"+test).bootstrapValidator({
        message: 'This value is not valid',
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
           fieldvalue: {
                message: 'The username is not valid',
                validators: {
                    notEmpty: {
                        message: 'The username is required and can\'t be empty'
                    },
                    stringLength: {
                        min: 6,
                        max: 30,
                        message: 'The username must be more than 6 and less than 30 characters long'
                    },
                    regexp: {
                        regexp: /^[a-zA-Z0-9_\.]+$/,
                        message: 'The username can only consist of alphabetical, number, dot and underscore'
                    }
                }
            } } }) });

            ]]></xp:this.value>
            </xp:scriptBlock>
            </xp:view>

    <!-- end snippet -->

Прикрепив картинку сюда, выведите после вашего предложения изображение ошибки

формирователь ошибок erro 3

1 Ответ

0 голосов
/ 14 января 2019

Когда вы проверите ваш источник HTML, вы обнаружите, что атрибуты id были изменены. Спецификации HTML требуют, чтобы идентификаторы были уникальными, поэтому JSF изменяет имена.

В вашем блоке скрипта вам нужно хранить их в переменных, а не использовать их буквально.

Вы уже сделали это для формы. Сделайте это и для полей.

Обновление

Ваш код, вероятно, должен выглядеть следующим образом (внутри CDATA):

      XSP.addOnLoad( function() {
     // You might need one more #
        $('#{id:maskForm}').bootstrapValidator({
        message: 'This value is not valid',
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
           '#{id:ipAddress}': {
                message: 'The username is not valid',
                validators: {
                    notEmpty: {
                        message: 'The username is required and can\'t be empty'
                    },
                    stringLength: {
                        min: 6,
                        max: 30,
                        message: 'The username must be more than 6 and less than 30 characters long'
                    },
                    regexp: {
                        regexp: /^[a-zA-Z0-9_\.]+$/,
                        message: 'The username can only consist of alphabetical, number, dot and underscore'
                    }
                }
            } } }) });

<pre><code>        ]]&gt;

Единственное поле в вашем фрагменте - ipAddress - это то, что используются в моих примерах. Хитрость здесь: замените статические идентификаторы на язык выражений XPages, который дает фактический идентификатор. Ваш скрипт-блок обрабатывает выражения перед отправкой данных в браузер. Браузер получает данные, не зная, что они были предварительно обработаны.

Так что, если у вас есть <input id="Color" />, вы используете #{id:Color}, чтобы получить фактический идентификатор.

Однако вы можете пересмотреть свой подход. XPages имеет отличные валидаторы, которые хранятся с полем и предлагают большую часть того, что вы ищете. Подтвердите правильность проверки, и вам постоянно нужно менять код при изменении полей. Держите поля и проверки вместе!

...