w3schools tag tab page change javascript jquery asp.net-mvc twitter-bootstrap

javascript - tag - Pasando datos a un modo de arranque



title of page html (6)

Así es como lo implementé trabajando desde el código de @ mg1075. Quería un código un poco más genérico para no tener que asignar clases a los enlaces / botones de activación modal:

Probado en Twitter Bootstrap 3.0.3.

HTML

<a href="#" data-target="#my_modal" data-toggle="modal" data-id="my_id_value">Open Modal</a>

JAVASCRIPT

$(document).ready(function() { $(''a[data-toggle=modal], button[data-toggle=modal]'').click(function () { var data_id = ''''; if (typeof $(this).data(''id'') !== ''undefined'') { data_id = $(this).data(''id''); } $(''#my_element_id'').val(data_id); }) });

Tengo un par de hipervínculos que tienen una identificación adjunta. Cuando hago clic en este enlace, quiero abrir un modal ( http://twitter.github.com/bootstrap/javascript.html#modals ) y pasar esta ID al modal. Busqué en google, pero no pude encontrar nada que pudiera ayudarme.

Este es el código:

<a data-toggle="modal" data-id="@book.Id" title="Add this item" class="open-AddBookDialog"></a>

Que debería abrir:

<div class="modal hide" id="addBookDialog"> <div class="modal-body"> <input type="hidden" name="bookId" id="bookId" value=""/> </div> </div>

Con esta pieza de código:

$(document).ready(function () { $(".open-AddBookDialog").click(function () { $(''#bookId'').val($(this).data(''id'')); $(''#addBookDialog'').modal(''show''); }); });

Sin embargo, cuando hago clic en el hipervínculo, no pasa nada. Cuando le doy al hipervínculo un href = "# addBookDialog", el modal se abre muy bien, pero no contiene ningún dato.

Seguí este ejemplo: Cómo pasar argumentos de valores a la función modal.show () en Bootstrap

(Y también intenté esto: ¿Cómo establecer el valor de entrada en un diálogo modal? )


Creo que puedes hacer que esto funcione con el controlador de eventos .on de jQuery.

Aquí hay un violín que puedes probar; solo asegúrate de expandir el marco html en el violín tanto como sea posible para que puedas ver el modal.

http://jsfiddle.net/Au9tc/605/

HTML

<p>Link 1</p> <a data-toggle="modal" data-id="ISBN564541" title="Add this item" class="open-AddBookDialog btn btn-primary" href="#addBookDialog">test</a> <p>&nbsp;</p> <p>Link 2</p> <a data-toggle="modal" data-id="ISBN-001122" title="Add this item" class="open-AddBookDialog btn btn-primary" href="#addBookDialog">test</a> <div class="modal hide" id="addBookDialog"> <div class="modal-header"> <button class="close" data-dismiss="modal">×</button> <h3>Modal header</h3> </div> <div class="modal-body"> <p>some content</p> <input type="text" name="bookId" id="bookId" value=""/> </div> </div>

JAVASCRIPT

$(document).on("click", ".open-AddBookDialog", function () { var myBookId = $(this).data(''id''); $(".modal-body #bookId").val( myBookId ); // As pointed out in comments, // it is superfluous to have to manually call the modal. // $(''#addBookDialog'').modal(''show''); });


Esta es una forma más limpia de hacerlo si está utilizando Bootstrap 3.2.0 .

Enlace HTML

<a href="#my_modal" data-toggle="modal" data-book-id="my_id_value">Open Modal</a>

JavaScript modal

//triggered when modal is about to be shown $(''#my_modal'').on(''show.bs.modal'', function(e) { //get data-id attribute of the clicked element var bookId = $(e.relatedTarget).data(''book-id''); //populate the textbox $(e.currentTarget).find(''input[name="bookId"]'').val(bookId); });

http://jsfiddle.net/k7FC2/


Puedes probar simpleBootstrapDialog . Aquí puede pasar opciones de título, mensaje, devolución de llamada para cancelar y enviar, etc.


Si estás en bootstrap 3+, esto puede reducirse un poco más si usas Jquery.

HTML

<a href="#" data-target="#my_modal" data-toggle="modal" class="identifyingClass" data-id="my_id_value">Open Modal</a> <div class="modal fade" id="my_modal" tabindex="-1" role="dialog" aria-labelledby="my_modalLabel"> <div class="modal-dialog" role="dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <h4 class="modal-title" id="myModalLabel">Modal Title</h4> </div> <div class="modal-body"> Modal Body <input type="hidden" name="hiddenValue" id="hiddenValue" value="" /> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">No</button> <button type="button" class="btn btn-primary">Yes</button> </div> </div> </div>

JQUERY

<script type="text/javascript"> $(function () { $(".identifyingClass").click(function () { var my_id_value = $(this).data(''id''); $(".modal-body #hiddenValue").val(my_id_value); }) }); </script>


Tu código hubiera funcionado con la estructura html modal correcta.

$(function(){ $(".open-AddBookDialog").click(function(){ $(''#bookId'').val($(this).data(''id'')); $("#addBookDialog").modal("show"); }); });

<html> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> <a data-id="@book.Id" title="Add this item" class="open-AddBookDialog">Open Modal</a> <div id="addBookDialog" class="modal fade" tabindex="-1" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-body"> <input type="hidden" name="bookId" id="bookId" value=""/> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div><!-- /.modal --> </html>