Извлечение элементов пользовательского интерфейса со значениями и идентификатором из HTML-формы и игнорирование пустых элементов и флажков FALSE
Я сгенерировал несколько форм, используя METAWIDGET, где я передаю облегченный JSON, теперь я хочу извлечь значения элементов пользовательского интерфейса вместе с их идентификаторами, а затем связать его со строкой, чтобы передать его в качестве параметра URL.
Теперь я могу написать Javascript для извлечения элементов и значений пользовательского интерфейса из формы, но если у вас есть форма с более чем 40 опциями и такое же количество элементов отсутствует для других форм, тогда становится трудно отдельно извлечь значения из элемента пользовательского интерфейса., Было бы замечательно, если бы кто-нибудь нашел такой API в Javascript, который автоматически извлекает значения элемента UI и ID, и было бы здорово, если бы вы могли поделиться им.
Спасибо!
1 ответ
Metawidget уже предоставляет такую возможность. Ты можешь использовать:
var processor = mw.metawidget( "getWidgetProcessor", function( widgetProcessor ) {
return widgetProcessor instanceof metawidget.widgetprocessor.SimpleBindingProcessor;
} );
processor.save( mw.data( 'metawidget' ) );
Извлечь SimpleBindingProcessor (который настроен по умолчанию) и вызвать его метод сохранения. Это сохранит содержимое всех элементов пользовательского интерфейса обратно в mw.toInspect
, Здесь есть пример. Обратите внимание, что некоторые разновидности Metawidget (например, Angular Metawidget) делают это автоматически.
Если вы особенно обеспокоены захватом идентификаторов элементов, вы можете расширить SimpleBindingProcessor
и переопределить его saveFromWidget
метод:
var bindingProcessor = new metawidget.widgetprocessor.SimpleBindingProcessor();
var superSaveFromWidget = bindingProcessor.saveFromWidget;
bindingProcessor.saveFromWidget = function( binding ) {
// access binding.widget.getAttribute( 'id' ) and save it somewhere
...
return superSaveFromWidget.call( this, binding );
}
Это будет срабатывать, когда вы звоните processor.save
как прежде.