我有一个相当基本的jquery对话框制作工具,可以在3个地方中的2个工作。在我尝试使用它的第三个实例中,一旦显示对话框,表单中的字段就会被禁用。
代码背后的一般概念是表单位于网站的不同页面上,为方便起见,启用javascript后,您可以单击链接,获取对话框,然后“在页面上”执行任务。 'rel'属性具有在jquery .load方法中使用的选择器,标题变为对话框标题,'href'处的页面加载并成为对话框内容。如果Javascript关闭,您只需获得相同的表单,但包含所有页眉/页脚/菜单内容。
如何在对话框显示时弄清楚发生了什么? Firefox变得迟钝(右键菜单弹出缓慢)并且表单字段被禁用。我只是对如何调试它感到茫然,以弄清楚那时发生了什么。 TAB将选择对话框“关闭”按钮,并选择已经包含值的字段,但这就是它结束的位置。 ESC仍将关闭对话框,因此键盘正在工作。我发现另外一个人报告了类似的问题CkEditor Bug,他们似乎修复了它,但我不知道他们是怎么做的。
在我忘记之前:JQuery 1.4.2 JQueryUI 1.8.2
网址如下:
<a class='dialog' href='/messages/compose/fsm92766/' rel = ' #compose-message' title='Send Message to'>Send Message To</a>
设置代码如下:
<script lanaguage='javascript'>
$(document).ready(function() {
$('a.dialog').each(function() {
var $link = $(this);
var $dialog = $('<div></div>')
.dialog({
autoOpen: false,
title: $link.attr('title'),
modal: true,
resizable: false,
width: 'auto',
position: 'center'
});
$link.click(function() {
var $url = $link.attr('href') + $link.attr('rel');
$dialog.html($url + "<br/>" +"<img src='http://ender.intomec.com/static/images/loading.gif'></img>");
$dialog.load($url)
$dialog.dialog('open');
return false;
})
})
});
</script>
对话框html看起来像:
<html>blah blah blah
<body>blah blah blah
-------------- JQuery Selector extracts this part from the page ----------------
<div id='compose-message'>
<form action="" method="post" class="uniForm">
<div style='display:none'>
<input type='hidden' name='csrfmiddlewaretoken' value='3c55a464683748b20a0e6abbcd22225d' />
</div>
<fieldset class="inlineLabels">
<div id="div_id_recipient" class="ctrlHolder ">
<label for="id_recipient">Recipient<span>*</span></label>
<input id="id_recipient" type="text" class="commaseparateduserinput" value="fsm92766" name="recipient" />
</div>
<div id="div_id_subject" class="ctrlHolder ">
<label for="id_subject">Subject<span>*</span></label>
<input id="id_subject" type="text" class="textinput textInput" name="subject" />
</div>
<div id="div_id_body" class="ctrlHolder ">
<label for="id_body">Body<span>*</span></label>
<textarea id="id_body" rows="12" cols="55" name="body" class="textarea"></textarea>
</div>
<div class="form_block">
<input type="submit" value="Send »"/>
</div>
</fieldset>
</form>
</div>
----------------------------------
blah blah blah
</body>
</html>
答案 0 :(得分:1)
Firefox的Firebug扩展程序非常适合调试javascript。
答案 1 :(得分:1)
为了确保,您使用的是 Firebug 吗? https://addons.mozilla.org/en-US/firefox/addon/1843/
它是调试javascript的好处,特别是如果你使用的是firefox,它们也有其他浏览器的'lite'版本。据我所知,它是事实上的javascript调试器。
Firebug添加了FireQuery以增强对jQuery https://addons.mozilla.org/en-US/firefox/addon/12632/
的调试