首先,我定制了 bootstrap-modal.js 以加载远程 php 表单。这是自定义(感谢drawjoh,https ://gist.github.com/1688900 ):
/*
$(function () {
$('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
var $this = $(this), href
, $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
, option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
e.preventDefault()
$target.modal(option)
})
})
*/
$(function () {
$('[data-toggle="modal"]').click(function(e) {
e.preventDefault();
var href = $(this).attr('href');
if (href.indexOf('#') == 0) {
$(href).modal('open');
} else {
$.get(href, function(data) {
$(data).modal();
}).success(function() { $('input:text:visible:first').focus(); });
}
});
})
该模式使用 form#email-entry-form 加载 email_ent.php:
<div class="modal fade in" id="contact-container">
<form action="#" id="email-entry-form" style="margin:0">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3 id="contact-title">Email Entry #{$entry_id}</h3>
</div>
<div class="modal-body">
<textarea class="full focused" id="contact-email" name="email" tabindex="1003" max-length="199" rows="3"></textarea>
<p class="help-block">Use commas to separate email addresses...</p>
<input type="hidden" name="form_id" value="{$form_id}" id="form_id" />
<input type="hidden" name="entry_id" value="{$entry_id}" id="entry_id" />
</div>
<div class="modal-footer">
<button type="reset" data-dismiss="modal" class="btn">Cancel</button>
<a id="contact-send" class="btn btn-primary" tabindex="1004" href="#">Send</a>
</div>
</form>
</div>
这是我使用的 jQuery 函数,但无法得到任何响应。
(function($){
$('#contact-send').click(function (e) {
e.preventDefault();
// validate form actions cleaned for clearity.
$.ajax({
url: 'email_ent.php',
data: $('#email-entry-form').serialize() + '&action=send',
type: 'post',
cache: false,
dataType: 'html',
complete: function (xhr) {
/*
more code here...
*/
alert('OK!');
},
error: contact.error
});
});
})(jQuery);
jquery.js 和这个函数是从触发模式窗口的 view_ent.php 加载的,但是点击函数不起作用。我认为它无法到达模态窗口中的元素,然后用ajax加载......
我试图在这个点击函数中提醒输入的值并得到未定义的响应。我不想放弃并为 view_ent.php 中具有预定义表单值的每个模式窗口加载隐藏表单。
感谢您的任何见解。