Подтвердить поле Jeditable

Я использую Jeditable (размещение в CakePHP) для ввода на моей странице. Я хочу, чтобы пользователи заполняли только цифры в полях Jeditable, поэтому моя идея заключалась в том, чтобы использовать плагин проверки jQuery, чтобы проверить, используются ли только числа, Я уже использую это в других частях моего сайта.

Jeditable динамически создает форму с вводом, когда вы нажимаете на div, поэтому, похоже, для Jquery не требуется ничего, чтобы привязываться к нему, и это не работает нормально.

Я могу установить имя класса формы через Jeditable (у него есть только класс atrribute), созданный вход имеет атрибут имени, который по умолчанию имеет "имя".

Мои вопросы:

  • Это хороший способ требовать только числа?
  • Если да, то как заставить его работать с Jquery validate
  • Если нет, то что будет лучшим решением?

Спасибо заранее, и я с нетерпением жду любых ответов, которые я мог бы получить;)

Ответ 1

Вы можете использовать плагин проверки jQuery непосредственно в jeditable для проверки полей вашей формы

$('.edit').editable(your_url, {
    onsubmit: function(settings, td) {
        var input = $(td).find('input');
        $(this).validate({
            rules: {
                'nameofinput': {
                    number: true
                }
            },
            messages: {
                'actionItemEntity.name': {
                    number: 'Only numbers are allowed'

                }

            }
        });

        return ($(this).valid());
    }
});

Ответ 2

этот код работал у меня

function isNumeric(value) {
  if (value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) return false;
  return true;
}

$('.edit').editable(your_url, {
    onsubmit: function(settings, td) {
      var input = $(td).find('input');
        var original = input.val();
        if (isNumeric(original)) {
            console.log("Validation correct");
            return true;
        } else {
            console.log("Validation failed. Ignoring");
            input.css('background-color','#c00').css('color','#fff');
            return false;
        }
    }
});

Ответ 3

Вы можете использовать событие onsubmit в Jeditable и проверить, имеет ли вход только номера. Это всего лишь пример, я не пробовал:

function isNumeric(value) {
  if (value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) return false;
  return true;
}

$('.edit').editable(your_url, {
    onsubmit: function(settings, original) {
        if (isNumeric(original)) {
            return true;
        } else {
            //display your message
            return false;
        }
    }
});

Ответ 5

В моем проекте я изменил имя функции на isAcceptable, потому что я допускаю, чтобы скобки, тире, точки были частью номера телефона.

function isAcceptable(value) {
  if (value == null || !value.toString().match(/^[-+]?\d*\.?[\d\s().-]+$/)) return false;
  return true;
}

Ответ 6

Откройте jquery.editable.js и найдите: функция onedit

/* setup some functions */
        var onedit   = settings.onedit   || function() { }; 

и выполните следующие действия:

$('.edit').editable(your_url, {
    onedit:function(){
            alert("original value"+$(this).text());
   },
});