Как создать 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-форму.
Я хочу что-то, что требует только определения. Любые идеи?
Ответы
Ответ 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
- сторонние библиотеки компонентов и валидаторы
- подключаемые макеты
Ответ 7
Откроется плагин jQuery Templates.
Некоторое время назад я написал небольшое сообщение в блоге Связывание данных на стороне клиента с помощью шаблонов jQuery. Мне кажется, что это именно то, что вы ищете.
Ответ 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, а Джереми взял Сафари, иначе он его остановил. Он блокирует все мои пароли, и он дырка в заднице. Да, я ругал и ненавижу его, достаточно ли я сказал???? У него гнилой кусок белого мусора и что с того, что если он богат, они худшие.. Отстань от моего компьютера, Джереми Дорн и Крис Восс !!!!!!!!!!!!