Berisi formulir dalam popover bootstrap?


95
<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>

JSfiddle

Saya menduga bahwa saya akan menyimpan konten formulir dalam fungsi javascript ...

Bagaimana cara memuat formulir dalam bootstrap popover?

Jawaban:


50

Ganti tanda kutip ganda type="text"dengan tanda kutip tunggal, Suka

"<form><input type='text'/></form>"

ATAU

ganti pembungkus tanda kutip ganda data-contentdengan tanda kutip tunggal, Suka

data-content='<form><input type="text"/></form>'

17
jangan lupa "data-html = 'true'" di tag tombol
cwirz

275

Saya akan memasukkan formulir saya ke markup dan bukan ke beberapa tag data. Beginilah cara kerjanya:

Kode JS:

$('#popover').popover({ 
    html : true,
    title: function() {
      return $("#popover-head").html();
    },
    content: function() {
      return $("#popover-content").html();
    }
});

Markup 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>

Demo

Pendekatan Alternatif:

X-Dapat diedit

Anda mungkin ingin melihat X-Editable . Perpustakaan yang memungkinkan Anda membuat elemen yang dapat diedit pada halaman Anda berdasarkan popovers.

Demo X-Diedit

Komponen web

Mike Costello telah merilis Komponen Web Bootstrap . Perpustakaan bagus ini memiliki Komponen Popovers yang memungkinkan Anda menyematkan formulir sebagai markup:

<button id="popover-target" data-original-title="MyTitle" title="">Popover</button>

<bs-popover title="Popover with Title" for="popover-target">
  <!-- MyForm -->
</bs-popover>

Demo


1
Solusi bagus, saya hanya meletakkan judul data-title="Some Title"di dalam <a id="myID">tag karena tidak memiliki div tambahan ...
pebbo

1
Satu-satunya jawaban yang benar.
poitroae

1
@HaNdTriX +10 untuk cara Anda mengatakannya.
2sb

1
Silakan baca: getbootstrap.com/javascript/#popovers Anda sedang mencari triggeropsi. ( trigger: 'focus')
HaNdTriX

1
Mengapa Anda tidak menggunakan: angular-ui.github.io/bootstrap/#/popover ? Ini harus menyelesaikan masalah Anda.
HaNdTriX

11
<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>

sebutkan saja data-html = "true"


5

seperti demo Kerja ini http://jsfiddle.net/7e2XU/21/show/# * Update: 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>

Kode JavaScript:

    $('a[rel=popover]').popover({
      html: 'true',
      placement: 'right'
    })

ScreenShot

berfungsi screenshot biola diperbarui


@DERIIIFranz Terima kasih sudah diperbaiki sekarang: jsfiddle.net/kz5kjmbt CDN hilang, periksa tautan dan tangkapan layar yang diperbarui. :)
Tats_innit

Solusi ini berfungsi di Chrome saat ini dan menjawab pertanyaan tersebut. Namun, memiliki markup kompleks dalam atribut html mungkin rawan kesalahan dan menambah risiko pada pemeliharaan dan kemampuan belajar kode.
Ricardo

4

Anda dapat memuat formulir dari divelemen tersembunyi dengan hiddenkelas yang disediakan Bootstrap .

<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,
});

1
Ganti $(...).parent().html()dengan $(...).clone();)
Rhys Bradbury

3

Atau coba yang ini

Yang kedua termasuk konten div tersembunyi kedua untuk menampung formulir yang berfungsi dan menguji biola 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>

Ini adalah solusi yang bagus tetapi tautan jsfiddle Anda tampaknya tidak sesuai dengan implementasi yang sama. Anda menemukan plunk ini yang saya buat yang mengimplementasikannya dengan benar: plnkr.co/edit/IV2YbLCFSiYI0T1mXOLN?p=preview .
bernardn

2

Solusi lengkap untuk siapa saja yang mungkin membutuhkannya, saya telah menggunakan ini dengan hasil yang bagus sejauh ini

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;
}

1

Saya banyak bekerja di WordPress jadi gunakan PHP.

Metode saya adalah memuat HTML saya dalam Variabel PHP, dan kemudian menggemakan variabel di data-content.

$my-data-content = '<form><input type="text"/></form>';

bersama

data-content='<?php echo $my-data-content; ?>' 
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.