предотвратите Дублирующиеся значения с помощью Проверки JQuery

Я имею форму и формирую текстовое поле, которое генерирует динамично использование JSP. И я использую проверку JQuery, но хочу добавить functionlaty для предотвращения дублирующейся записи в форме.

Например.

<form name="myForm" id="myForm">
      <input type="text" name="text1" id="text1">
      <input type="text" name="text2" id="text2">
      <input type="text" name="text3" id="text3">
      =
      = 
      N number of form fields
      <input type="text" name="textn" id="textn">

</form>

Я хочу проверить, существует ли какое-либо дублирующееся значение, вводимое в текстовое поле с помощью проверки jQuery.

27
задан Arslan Ali 25 November 2016 в 12:47
поделиться

2 ответа

Что-то вроде этого должно работать:

$(function(){

$('input[name^="text"]').change(function() {

    var $current = $(this);

    $('input[name^="text"]').each(function() {
        if ($(this).val() == $current.val() && $(this).attr('id') != $current.attr('id'))
        {
            alert('duplicate found!');
        }

    });
  });
});

Вкратце, это работает так: всякий раз, когда пользователь вводит что-то в текстовое поле, JQuery просматривает все текстовые поля в форме и сравнивает их значения со значением, которое пользователь только что вошел, если будет найдено повторяющееся значение, предупредить пользователя.

11
ответ дан 28 November 2019 в 04:48
поделиться

Bug Magnet, ваш ответ не расширяет функциональность проверки jquery. это отдельный сценарий.

Вы можете добиться этого, сделав следующие изменения в jquery.validate.js:

строка 275: добавьте сообщение для уникального метода

messages: {
        unique: "This answer can not be repeated.",

строка 744: добавьте новое правило класса для unique

classRuleSettings: {
        unique: { unique: true },

и, наконец, строка 899: добавьте новый уникальный метод

methods: {

        unique: function (value, element) {
            var parentForm = $(element).closest('form');
            var timeRepeated = 0;
            $(parentForm.find('input:type=text')).each(function () {
                if ($(this).val() === value) {
                    timeRepeated++;
                }
            });
            if (timeRepeated === 1 || timeRepeated === 0) {
                return true
            }
            else { 
                return false
            }
        },

теперь, просто когда вы вызываете свою функцию проверки, вы можете использовать уникальный метод вроде этого:

$("#signupForm").validate({
    rules: {
        firstname: "required",
        lastname: "required",
        username: {
            required: true,
            unique: true,
            minlength: 2
        },
12
ответ дан 28 November 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: