Пользовательская проверка текстовых полей dijit - PullRequest
1 голос
/ 04 августа 2009

Я сегодня искал в сети информацию о проверке текстовых полей, но даже на домашней странице Dojo я не мог получить никакой полезной информации.

Моя проблема: у меня есть NumberSpinner, в котором должны быть разрешены только числа с шагом в десять (10, 20, 30, ...). Но я понятия не имею, как установить валидатор для этого. В выражении «ограничения», кажется, нет возможности сделать это. И я не знаю, как использовать функцию-валидатор, чтобы в поле сразу появлялся предупреждающий знак при вводе неправильного текста.

Другой вопрос, как проверить, является ли какая-либо часть формы недействительной перед ее отправкой. Есть ли в каждом поле ввода / выбора атрибут, например, «действительный», чтобы проверить их все сразу?

О, один совет, я создаю все виджеты программно.

Надеюсь, кто-нибудь может мне помочь !!!

С уважением, Robin

Ответы [ 3 ]

3 голосов
/ 05 августа 2009

Вы можете переопределить метод isValid () в NumberSpinner. Например:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>

<head>
  <title>class</title>
  <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dijit/themes/soria/soria.css" />
  <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js"></script>
  <script type="text/javascript">
    dojo.config.parseOnLoad = true;
    dojo.addOnLoad(function() {
      dojo.require('dijit.form.NumberSpinner');
      dojo.require('dojo.parser');
      dojo.addOnLoad(function() {
        new dijit.form.NumberSpinner({
          isValid: function(isFocused) {
            var value = parseFloat(this.attr('value'));
            if (isNaN(value) || (value % 10 != 0)) {
              return false;
            } else {
              return true;
            }
          }
        }, 'here');

      });

    });
  </script>
</head>

<body class="soria">
  <div id="here"></div>
</body>

</html>
0 голосов
/ 03 сентября 2009

Для этого вы также можете использовать атрибут delta / smallDelta. См. Пример в кампусе Dojo

0 голосов
/ 05 августа 2009

dijit.form.NumberSpinner является производным от dijit.form.ValidationTextBox и поэтому принимает те же аргументы (см. dijit.form.ValidationTextBox документы и встроенные документы в исходном коде ) , Просто напишите регулярное выражение (в виде строки), которое может подтвердить ваш ввод. Нечто подобное должно сработать:

var box = new dijit.form.NumberSpinner({
  regExpGen: function(){ return "\\d+0"; }
}, "my_node");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...