2010-03-11 4 views
10

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

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

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

Мои вопросы:

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

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

ответ

13

Плагин проверки 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()); 
    } 
}); 
+0

Вы объявляете ввод, но не используя его, в чем смысл? –

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; 
     } 
    } 
}); 
+0

Спасибо, у меня не было времени, чтобы действительно проверить это, в мои первые попытки это не сработало (всегда возвращалось ложно), но, как сказано, у меня не было действительно времени попробовать его правильно, огромное спасибо за ваш ответ, тем не менее! :) – JanWillem

+0

кажется, что Jeditable представляет, если вы возвращаетесь ложь в любом случае: http://markmail.org/message/cgagaclwtk6bt4yv Изменение кода упоминается в URL больше не доступен :(Я надеюсь, что кто-то может помочь мне получить это работает! – JanWillem

+0

Это работает в текущей версии jEditable. –

10

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

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; 
     } 
    } 
}); 
+0

Oooh. Использование console.log * like * – jonasespelita

+0

$ (td) .find ('input'); необходимо ли это только для данных таблицы? – shennyL

0

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

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

Open jquery.editable.js и найти: onedit функция

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

и сделать некоторые вроде:

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