Что вызывает И.Е. не проверять (jquery), когда другие браузеры делают - PullRequest
2 голосов
/ 09 ноября 2011

У меня есть форма, использующая jQuery 1.7 и jQuery validation 1.9 (последняя на момент написания этой статьи), которая работает на firefox / chrome / safari, но только частично работает на IE (8.0 по крайней мере, не тестировала другиеверсии) - не уверен, что сделка.Вот пример: http://jsfiddle.net/bulbous/hZn5A/100/

если вы нажмете кнопку «Тест», вы увидите, что элемент управления вводом текста проверен во всех браузерах, но раскрывающийся список не проверен в т. Е. (Но во всех остальных).Я включаю полный HTML-код для примера ниже также:

<head>
    <script src="jquery-1.7.js" type="text/javascript"></script>
    <script src="jquery.validate-1.9.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function() {
  jQuery.validator.addMethod("notEqual", function(value, element, param) {
      return this.optional(element) || value != param;
  }, "Please choose some value!");

  $('#myForm').validate({
      rules: {
          text: {
              required: true
          },
          category: {
              required: true,
              notEqual: "---"
          }
      },
      messages: {
          text: {
              required: "Text required"
          },
          category: {
              required: "Category required"
          }
      }
  });
});
    </script>
<form id="myForm">
    <select id="category" name="category">
        <option>---</option>
        <option>Category 1</option>
        <option>Category 2</option>
        <option>Category 3</option>
    </select>
    <input type="text" id="text" name="text" />
    <input type="submit" value="Test" />
</form
</body>
</html>

Ответы [ 5 ]

5 голосов
/ 09 ноября 2011

Если вы дадите тегам <option> явные атрибуты «value», это сработает.

<option value='---'>---</option>

Мне не понятно, почему в IE7 происходит сбой, но не в IE8.

4 голосов
/ 09 ноября 2011

Кажется, это ошибка валидатора. Но как обходной путь, вы можете рассмотреть выбор элемента и получить значение. Посмотрите это, работая на IE7:

jQuery.validator.addMethod("notEqual", function(value, element, param) {
    return this.optional(element) || $(element).val() !== param;
}, "Please choose some value!");
2 голосов
/ 09 ноября 2011

Это потому, что ни один из ваших вариантов не имеет значений.

    <option value='---'>---</option>
    <option value='Category 1'>Category 1</option>
    <option value='Category 2'>Category 2</option>
    <option value='Category 3'>Category 3</option>
1 голос
/ 09 ноября 2011

Вы используете слово «текст» для id и name.

Слово «текст» не является конкретно «зарезервированным» , но оно одно из тех "слова, которых лучше избегать" ...

http://www.kourbatov.com/faq/reserved.htm


Кроме того, Плагин проверки был протестирован только доjQuery версия 1.6.1

Понизьте версию jQuery, чтобы исключить проблему с jQuery 1.7

0 голосов
/ 09 ноября 2011

думаю, это должно работать

<html>
<head>
    <script src="jquery-1.7.js" type="text/javascript"></script>
    <script src="jquery.validate-1.9.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function() {
    $('#myForm').validate({
      rules: {
          text: {
              required: true
          },
          category: {
              required: true
          }
      },
      messages: {
          text: {
              required: "Text required"
          },
          category: {
              required: "Category required"
          }
      }
  });
});
    </script>
<form id="myForm">
    <select id="category" name="category">
        <option value="">---</option>
        <option value="Category 1">Category 1</option>
        <option value="Category 2">Category 2</option>
        <option value="Category 3">Category 3</option>
    </select>
    <input type="text" id="text" name="text" />
    <input type="submit" value="Test" />
</form
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...