问题描述
我有jquery,但它不会转到下一页,它总是显示图像并等待,从不进行下一页。
HTML代码:
<div id=\"toHide\" class=\"pb-text-align-center\">
<img style=\"display: inline\" src=\"img/load.gif\" />
<form wicket:id=\"safeForm\" class=\"clearfix\">
<input type=\"hidden\" wicket:id=\"submitted\" value=\"false\" />
</form>
</div>
HTML视图源:
<SCRIPT type=\"text/javascript\">
var $ = jQuery.noConflict();
$(\'.toHide\').show().doTimeout(100,function() {
$(\'.toHide\').find(\'safeForma3\').submit();});
</SCRIPT>
检票口代码:
static private class SafeSubmitBehavIoUr extends AbstractBehavior{
public void onRendered( Component component ) {
super.onRendered( component );
StringBuffer buffer = new StringBuffer(200);
buffer.append(\"<script type=\\\"text/javascript\\\" >\\n\");
buffer.append(\"var $ = jQuery.noConflict();\\n \");
buffer.append(\" $(\'.toHide\').show().doTimeout(100,function() { $(\'.toHide\').find(\'\");
buffer.append(component.getMarkupId()).append(\"\').submit();});\\n</script>\");
component.getResponse().write(buffer);
}
}
buffer.append(component.getMarkupId()).append(\"\').submit();});\\n</script>\");
我已经尝试过:$(\'。toHide \')。find(\'form \')。submit();});。但是还是没用。
将$(\'。toHide \')逼至$(\'#toHide \')之后,页面将移至下一页,但动画未在IE6 / 7中发生,在FF中可以正常工作。
解决方法
我认为您应该尝试这样做:
$(\'#toHide\').find(\'form\').submit();
或者,如果表单上有ID(我对Wicket不熟悉),则可以使用:
$(\'#safeForm\').submit();
ID选择器使用\'#\'字符,而不是\'。\',这是类选择器前缀。
,\“ toHide \”<div>
具有该字符串作为其id值,而不是其类,因此您需要:
$(\'#toHide\')
选择器“ .toHide \”将查找带有“ toHide \”作为元素的元素,因此根本找不到您的<div>
。
要查找表格,您将使用
$(\'#toHide form\').submit();
,您的HTML中没有名为\'safeForm15 \'的ID,这是setTimeout试图选择的ID。实际上,表单具有ID命名空间,我认为这是非法的。
无论如何,快速的解决方法是从\'toHide \'提示,并摆脱component.getMarkupId位。
$(\'#toHide\').find(\'form\').submit();
添加:
您需要更改此:
buffer.append(\" setTimeout(function(){ $(\\\"#\").append(component.getMarkupId()).append(\"\\\").submit()},100);\\n\");
对此:
buffer.append(\" setTimeout(function(){$(\'#toHide\').find(\'form\').submit();},100);\\n\");
,这是IE的问题,如果您有一个不可见的GIF,然后将其设置为可见,则动画不起作用。
最好的办法是只使用一个空白图像标签,例如<img src=\'\' />
,然后在要使其可见时,将src
设置为正确的路径,即<img src=\'AnimatingImg.gif\' />
。
如果您这样做,它应该可以工作。
编辑
您可以这样做:
<SCRIPT type=\"text/javascript\">
var $ = jQuery.noConflict();
$(\'#toHide\').show();
$(\'#loadingImg\').attr(\'src\',\'img/load.gif\');
setTimeout(function() {
$(\'#toHide\').find(\'safeForma3\').submit();
},100);
</SCRIPT>
html代码:
<div id=\"toHide\" class=\"pb-text-align-center\">
<img id=\"loadingImg\" style=\"display:inline\" src=\"\" />
<form wicket:id=\"safeForm\" class=\"clearfix\">
<input type=\"hidden\" wicket:id=\"submitted\" value=\"false\" />
</form>
</div>
尝试一下,可能需要一点摆弄。
,其他人提到您的选择器存在问题。
但是,此代码在两个script
标记之间也显示为裸露。这意味着它们将在解析后立即执行。这意味着它们可以在整个DOM加载之前执行,从而使其无效。
您需要使用以下内容:
<SCRIPT type=\"text/javascript\">
var $ = jQuery.noConflict();
$(document).ready(function(){
$(\'#toHide\').show().doTimeout(100,function() {
$(\'#safeForma3\').submit();
});
});
</SCRIPT>