Содержать форму в Bootstrap popover?
<div class="container">
<div class="row" style="padding-top: 240px;">
<a href="#" class="btn btn-large btn-primary" rel="popover"
data-content="<form><input type="text"/></form>"
data-placement="top" data-original-title="Fill in form">Open form</a>
</div>
</div>
Я предполагаю, что я буду хранить содержимое формы в функции javascript...
как я могу содержать форму в Bootstrap popover?
8 ответов:
либо заменить двойные кавычки
type="text"
с одинарными кавычками, как"<form><input type='text'/></form>"
или
заменить двойные кавычки оборачивать
data-content
с опаленными кавычками, какdata-content='<form><input type="text"/></form>'
Я бы поместил свою форму в разметку, а не в какой-то тег данных. Вот как это может работать:
JS код:
$('#popover').popover({ html : true, title: function() { return $("#popover-head").html(); }, content: function() { return $("#popover-content").html(); } });
разметка HTML:
<a href="#" id="popover">the popover link</a> <div id="popover-head" class="hide"> some title </div> <div id="popover-content" class="hide"> <!-- MyForm --> </div>
Альтернативные Подходы:
X-Редактируемый
вы, возможно, захотите взглянуть на X-Редактируемый. Библиотека, которая позволяет создавать редактируемые элементы на странице на основе булочки.
Webcomponents
Майк Костелло выпустил Bootstrap Web Components. Эта отличная библиотека имеет компонент Popovers, который позволяет вставлять форму в виде разметки:
<button id="popover-target" data-original-title="MyTitle" title="">Popover</button> <bs-popover title="Popover with Title" for="popover-target"> <!-- MyForm --> </bs-popover>
<a data-title="A Title" data-placement="top" data-html="true" data-content="<form><input type='text'/></form>" data-trigger="hover" rel="popover" class="btn btn-primary" id="test">Top popover</a>
just state data-html= "true"
или попробуйте этот
Второй, включая второй скрытый div-контент, чтобы держать форму рабочей и тестировать на скрипке http://jsfiddle.net/7e2XU/21/
<link href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css" rel="stylesheet"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"> <script src="http://twitter.github.com/bootstrap/assets/js/bootstrap-tooltip.js"></script> <script src="http://twitter.github.com/bootstrap/assets/js/bootstrap-popover.js"></script> <div id="popover-content" style="display: none" > <div class="container" style="margin: 25px; "> <div class="row" style="padding-top: 240px;"> <label id="sample"> <form id="mainForm" name="mainForm" method="post" action=""> <p> <label>Name :</label> <input type="text" id="txtName" name="txtName" /> </p> <p> <label>Address 1 :</label> <input type="text" id="txtAddress" name="txtAddress" /> </p> <p> <label>City :</label> <input type="text" id="txtCity" name="txtCity" /> </p> <p> <input type="submit" name="Submit" value="Submit" /> </p> </form> </label> </div> </div> </div> <a href="#" style="margin: 40px 40px;" class="btn btn-large btn-primary" rel="popover" data-content='' data-placement="left" data-original-title="Fill in form">Open form</a> <script> $('a[rel=popover]').popover({ html: 'true', placement: 'right', content : function() { return $('#popover-content').html(); } }) </script>
такой рабочая демо http://jsfiddle.net/7e2XU/21/show/# * Обновление: http://jsfiddle.net/kz5kjmbt/
<div class="container"> <div class="row" style="padding-top: 240px;"> <a href="#" class="btn btn-large btn-primary" rel="popover" data-content=' <form id="mainForm" name="mainForm" method="post" action=""> <p> <label>Name :</label> <input type="text" id="txtName" name="txtName" /> </p> <p> <label>Address 1 :</label> <input type="text" id="txtAddress" name="txtAddress" /> </p> <p> <label>City :</label> <input type="text" id="txtCity" name="txtCity" /> </p> <p> <input type="submit" name="Submit" value="Submit" /> </p> </form> data-placement="top" data-original-title="Fill in form">Open form</a> </div> </div>
JavaScript код:
$('a[rel=popover]').popover({ html: 'true', placement: 'right' })
скриншот
вы можете загрузить форму из скрытого
div
элемент с Bootstrap-providedhidden
класса.<button class="btn btn-default" id="form-popover">Form popover</button> <div class="hidden"> <form id="form"> <input type="text" class="form-control" /> </form> </div>
JavaScript:
$('#form-popover').popover({ content: $('#form').parent().html(), html: true, });
полное решение для тех, кто может понадобиться, я использовал это с хорошими результатами до сих пор
JS:
$(".btn-popover-container").each(function() { var btn = $(this).children(".popover-btn"); var titleContainer = $(this).children(".btn-popover-title"); var contentContainer = $(this).children(".btn-popover-content"); var title = $(titleContainer).html(); var content = $(contentContainer).html(); $(btn).popover({ html: true, title: title, content: content, placement: 'right' }); });
HTML:
<div class="btn-popover-container"> <button type="button" class="btn btn-link popover-btn">Button Name</button> <div class="btn-popover-title"> Popover Title </div> <div class="btn-popover-content"> <form> Or Other content.. </form> </div> </div>
CSS:
.btn-popover-container { display: inline-block; } .btn-popover-container .btn-popover-title, .btn-popover-container .btn-popover-content { display: none; }