Подтвердить что ты не робот

Как создать html-форму с использованием определения JSON?

Я ищу javascript-библиотеку, которая позволяет мне хранить (html) формы в формате JSON, с небольшим количеством интеллекта, встроенным в валидацию входных данных на стороне клиента. Что-то вроде:

function FormController(){
  this.user = {
    name: 'John Smith',
    address:{line1: '123 Main St.', city:'Anytown', state:'AA', zip:'12345'},
    contacts:[{type:'phone', value:'1(234) 555-1212'}]
  };
  this.state = /^\w\w$/;
  this.zip = /^\d\d\d\d\d$/;
}

(Это взято из http://docs.angularjs.org/#!cookbook.form). Это почти то, что я хочу, так как он предлагает базовую проверку на стороне клиента с помощью регулярных выражений, и вы можете предоставить настройки по умолчанию, но, похоже, вам все же нужно создать HTML-форму.

Я хочу что-то, что требует только определения. Любые идеи?

4b9b3361

Ответ 1

В бесстыдной саморекламе я также хотел бы упомянуть мой jQuery.dForm плагин. Это было какое-то время и поддержка плагина проверки jQuery, пользовательский интерфейс jQuery и легко расширяемый. Вот как это выглядит:

var formdata =
{
    "action" : "index.html",
    "method" : "get",
    "elements" : 
    [
        {
            "name" : "textfield",
            "caption" : "Label for textfield",
            "type" : "text",
            "value" : "Hello world"
        },
        {
            "type" : "submit",
            "value" : "Submit"
        }
    ]           
};
$("#myform").buildForm(formdata);

// Or to load the form definition via AJAX
$("#myform").buildForm("http://example.com/myform.json");

Ответ 2

Я бы предложил использовать форму JSON.

Требуется JSON Schema и может моментально создать для нее форму и дополнительно предоставить вам варианты настройки формы далее. Например:.

$('#myform').jsonForm({
  schema: {
    name: {
      type: 'string',
      title: 'Name',
      required: true
    },
    age: {
      type: 'number',
      title: 'Age'
    }
  }
});

... генерирует форму с двумя входами в элементе #myform. (jQuery не является обязательным.)

Использование стандартизованного формата JSON Schema дает другие большие преимущества и больше инструментов для работы с определением данных.

Ответ 3

Я согласен с Jeremy S Angular Форма схемы является выдающейся. Он следует той же схеме, что и JSON Form, и я начал использовать его в процессе производства, и он работает очень хорошо.

Он также расширяем, и я довольно быстро написал инструмент для чтения определения гипер-схемы и вытащил опции выбора поля из внешнего источника и понаблюдал за другими связанными полями для своих данных. Для его создания потребовался всего один день, достаточно сказать, что его действительно легко расширить, и поскольку он также использует преимущества Angular, я бы назвал его лучшим выбором.

Если вы не используете Angular, тогда JSON Form будет моим предпочтительным вариантом, так как я вижу, что его схема и шаблон формы появляются как часть стандарта, используя эти два проекта. Также, учитывая мой опыт работы с управлением корпоративными службами, имеет смысл, поскольку почти все инструменты для управления услугами имеют модель данных, а затем компонент администрирования формы для расширения модели.

Отказ от ответственности: я не поддерживал Angular форму схемы, когда писал это.

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

Ответ 4

Определенно проверьте Alpaca: http://www.alpacajs.org

Он отображает HTML-формы из схемы JSON, используя Bootstrap, jQueryUI, jQuery Mobile или прямое веб-управление. Он имеет большую библиотеку элементов управления и всевозможные отличные функции.

Мы используем его в Cloud CMS (http://www.cloudcms.com), чтобы отобразить некоторые действительно интуитивно понятные пользовательские интерфейсы.

Альпака сам является лицензированным Apache 2.0 и на GitHub (https://github.com/gitana/alpaca).

Приходящий выпуск версии 1.5.0 представляет собой чистую поддержку Handlebars и пользовательские сборки gulp. Довольно классный материал.

Ответ 5

Angular не решает вашу проблему из коробки, потому что она предполагает, что у вас есть статический html, к которому вы хотите привязать некоторые данные.

Сказав, что вы можете использовать angular для достижения своих целей. Вы можете создать новый тег (виджет angular), который возьмет объект js и динамически создаст форму DOM вместе со всеми атрибутами проверки angular. Затем вы компилируете форму с помощью компилятора angular и присоединяете его к своей странице. Это приведет к созданию динамически созданной формы со всеми существующими функциями angular проверки и привязки данных, работающими как со статическим html.

Я ничего не могу придумать, что помешало бы вам сделать это через angular.widget api, но это не тривиальная задача.

Можете ли вы рассказать мне больше о ваших структурах данных? Интересно, было бы недостаточно иметь только набор форм и использовать правильный в нужное время. Зачем вам создание формы с помощью полностью динамических и управляемых данными?

UPDATE: решение angular можно найти на https://groups.google.com/forum/#!topic/angular/f8KbLtT_Mqs

Ответ 6

Могу ли я смиренно предложить Metawidget?

Он генерирует HTML-формы из произвольных сложных объектов JSON. Пример простого JavaScript:

<!DOCTYPE HTML>
<html>
   <head>
      <script src="http://metawidget.org/js/4.0/metawidget-core.min.js"></script>
      <style>
         #metawidget {
            border: 1px solid #cccccc;
            width: 250px;
            border-radius: 10px;
            padding: 10px;
            margin: 50px auto;
         }
      </style>
   </head>
   <body>
      <div id="metawidget"></div>
      <script type="text/javascript">
         var mw = new metawidget.Metawidget( document.getElementById( 'metawidget' ));
         mw.toInspect = {
            firstname: 'Homer',
            surname: 'Simpson',
            age: 36
         };
         mw.buildWidgets();
      </script>
   </body>
</html>

Он также поддерживает:

  • расширение объекта JSON с дополнительными источниками метаданных, таких как схема JSON или метаданные служб REST
  • такие как JQuery UI, JQuery Mobile, AngularJS
  • сторонние библиотеки компонентов и валидаторы
  • подключаемые макеты

Ответ 8

Я использовал редактор Джереми Дорна JSON для различных приложений и всегда был доволен этим! Он использует JSON Schema и добавляет некоторые опции для генерации формы (поскольку вы могли бы иметь различные входы для данного типа структуры данных)

https://github.com/jdorn/json-editor

Ответ 9

Отъезд InputEx, кажется, именно то, что вы хотите.

Он использует JSON для определения всей формы:

// Create a schemaIdentifierMap 
var schemaIdentifierMap = {
 // Person definition
 "Person": {
    "id": "Person",
    "description":"A person",
    "type":"object",
    "properties": {
        "name": { "type":"string"},
        "born" : { "type":"string", "format":"date", "optional":true},
        "gender" : { "type":"string", "choices": [ {"value":"male","label":"Guy"}, {"value":"female","label":"Girl"} ]},
        "grownup": { "type": "boolean" },
        "favoritecolors": { "type": "array" },
        "address": { 
            "type":"object",
            "properties":{
                "street":{"type":"string"},
                "city":{"type":"string"},
                "state":{"type":"string"}
            }
        }
    }
 }
};

(из http://neyric.github.com/inputex/examples/json-schema.html)

Ответ 10

Взгляните на brutusin: json-forms.

Он принимает JSON-Schema и исходные данные JSON для заполнения формы.

Ответ 11

У меня на ноутбуках Джереми Дорн. Он был адским человеком, который снял все с моих компьютеров. Социальное обеспечение, банковское дело, ставит???? по всему сайту, так что я не могу его прочитать, трясет экран, чтобы я ничего не мог сделать, выключает мое сафари, выключает мои системные настройки, вынимает мою сеть, вынимает мои документы IRS, он сделал это уголовное преступление и я надеюсь, что они посадят его в тюрьму. Ему 30 лет, выпускник АЗ со степенью по компьютерам, а он вредитель. Думает, что знает все и женат на толстой, уродливой жене, которая оскорбила меня, когда я позвонил ему, чтобы попросить починить компьютеры, которые он сломал. Он пытался найти много рабочих мест, чтобы купить ЕЕ роскошный дом и много дорогих вещей, чтобы положить в него. У него есть собака по кличке Уолли, а его отец продает страховку. Богатый ребенок, родом из семьи доверия, я проверил его, пока он проверял меня. У меня есть друг в Индианаполисе, который работал там, где я работал, и у него тоже психическое заболевание. Я просто хочу, чтобы он с моего компьютера, прежде чем что-то плохое happens..He не хотел, он удаленного пользователя, и он положил на мой ПОРНО заказ компьютера. Я упал со стула, когда нашел его. Я единственный пользователь на своих ноутбуках.. Он на них все время, имеет камеры и чрезвычайно зол, что я борюсь за то, чтобы мои ноутбуки оставались в шахте. Он вор, он лжец и он грязный гнилой негодяй. Он подонок земли и сделает все, чтобы сохранить на моих ноутбуках. Ну, я ненавижу его и хочу, чтобы он ушел. Он трус, прячется за Chrome, и я бы сюда не попал, если бы не скачал Chrome, а Джереми взял Сафари, иначе он его остановил. Он блокирует все мои пароли, и он дырка в заднице. Да, я ругал и ненавижу его, достаточно ли я сказал???? У него гнилой кусок белого мусора и что с того, что если он богат, они худшие.. Отстань от моего компьютера, Джереми Дорн и Крис Восс !!!!!!!!!!!!