jquery没有进入下一页

时间:2011-05-26 14:08:39

标签: javascript jquery wicket

我有jquery,但它不会进入下一页,它总是显示图像并等待,永远不会进入下一页。

HTML code:

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

wicket代码:

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中运行正常。

5 个答案:

答案 0 :(得分:4)

“toHide”<div>有字符串,因为它是 id 值,而不是它的类,所以你需要:

 $('#toHide')

选择器“.toHide”会查找带有“toHide”的元素作为类的一部分,因此根本找不到您的<div>

要查找表单,请使用

 $('#toHide form').submit();

答案 1 :(得分:1)

您的HTML中没有名为“safeForm15”的ID,这是您的setTimeout尝试选择的内容。事实上,该表单具有ID namespaced,我认为这是非法的。

无论如何,快速解决方法是提示'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"); 

答案 2 :(得分:1)

我想你应该试试这个:

$('#toHide').find('form').submit();

或者如果表单上有ID(我不熟悉Wicket)你可以使用:

$('#safeForm').submit();

ID选择器使用'#'字符,而不是'。',它是类选择器前缀。

答案 3 :(得分:1)

其他人提到了选择器的问题。

但是,此代码在两个script标记之间也显示为裸露。这意味着它们将在解析后立即执行。这意味着它们可以在加载整个DOM之前执行,从而使它们无效。

您需要使用以下内容:

<SCRIPT type="text/javascript">  
   var $ = jQuery.noConflict();  
   $(document).ready(function(){
       $('#toHide').show().doTimeout(100,function() { 
           $('#safeForma3').submit();
       });
   });
</SCRIPT>

答案 4 :(得分:1)

这是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>

尝试一下,可能需要一些摆弄。