2016-12-22 12 views
0

Я пытаюсь создать поле с несколькими параметрами ввода радио и необязательным заполнением пробела. Следующая схема не работает при отображении вывода:радио с пользовательским входом в alpacajs с jsonschema?

{ 
    "oneOf": [ 
     { 
      "enum": [ 
       "Option 1", 
       "Option 2", 
       "Option 3" 
      ] 
     }, { 
      "type":"string" 
     } 
    ] 
} 

Что мне делать? Благодаря!

Разъяснение: Я хотел бы выход:

() option 1 
() option 2 
() option 3 
(X) custom [__fill in the blank here__] 

ответ

1

Прости, что это была моя ошибка, я случайно переопредели эту скрипку. Благодарим Вас за разъяснения. Если вы хотите иметь этот макет на своей странице, вы должны использовать два разных компонента, кнопки группы радио и простое текстовое поле, которое автоматически будет добавлено после группы радио (но вы могли бы лучше использовать jquery и добавить его в другом месте . в функции postRender альпаков Так что ваш schema должен быть так:

"schema": { 
    "type": "object", 
    "properties": { 
    "oneOf": { 
     "required": true, 
     "enum": ['a', 'b', 'c', 'd'] 
    }, 
    "customResponse": { 
     "type": "string" 
    } 
    } 
} 

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

Подробнее ... fiddle.

+0

Выглядит здорово! Я надеялся, что у Alpaca/JSON Schema будет более «встроенный» способ сделать это без использования всего настраиваемого кода, но это работает. Тип вывода «{» oneOf »:« custom »,« customResponse »:« Пользовательское значение здесь »}' менее прост, чем чистая строка, но может быть легко фильтрован. Спасибо! – mikhuang

0

ваши свойства схемы должны быть заключены в свойства объекта, и если «oneOf» относится к группе кнопок должно быть объект не является массив.

"properties": { 
    "oneOf": { 
    "required": true, 
    "enum": ["option1", "option2", "option3"] 
    }, //// 

Полный текст fiddle, надеюсь, что это поможет. Скажите, хотите ли вы что-то еще.

+0

Спасибо, что ответили. Скрипка, похоже, не обновилась? Я развернул пример слайдера, который я нашел по ссылке, и попытался выполнить ваши инструкции: https://jsfiddle.net/24zcpgty/ Я, вероятно, ошибаюсь, но выводит пустой ввод. Чтобы быть конкретным, я хотел бы вывод: вариант() 1 () вариант 2 () вариант 3 (X) на заказ [__fill в пустой here__] – mikhuang