2016-03-01 50 views

回答

2

ModalWindow的JavaScript产生一个<form>支持下列用例:

+ Page 
    + Form("f") 
    + TextField("a") 
    + ModalWindow("m") 
     + Form("f2") 
     + TextField("b") 

当在浏览器中呈现,嵌套形式“F2”呈现为<div> - 这是后话检票为你做,因为嵌套表单不是有效的HTML。

当打开时,ModalWindow删除其含有标记,并把它放入添加到文档主体上的<div>

<form wicket:id="f"> 
    <input wicket:id="a" /> 
    <div wicket:id="m"> 
     <!-- markup removed --> 
    </div> 
</form> 

<div> 
    <form> <!-- generated form --> 
     <div wicket:id="f2"> 
      <input wicket:id="b" /> 
     </div> 
    </form> 
</div> 

没有产生形成的模态窗口内的输入不能通过Ajax提交。

请注意,这有一个顽皮的暗示: 即使你只是想使用模态窗口内的窗体,你仍然必须有一个窗体包装模态窗口。

没有它:

+ Page 
    # wrong - no wrapping form 
    + ModalWindow("m") 
    + Form("f2") 
     + TextField("b") 

... “F2” 将留<form>其结果将有两个嵌套的表格无效的HTML:

<div wicket:id="m"> 
    <!-- markup removed --> 
</div> 

<div> 
    <form> <!-- generated form --> 
     <form wicket:id="f2"> 
      <input wicket:id="b" /> 
     </form> 
    </form> 
</div> 
+0

我觉得这种使用情况非常混乱。如果我在(或以任何其他方式提交)中输入ENTER键,将会提交哪个表格?用wicket:id =“f”或者自动生成的那个?如果我需要在模态中有一个表单,那么我会在周围提供我自己的

。我猜想自动生成的是为了支持像嵌套窗体这样的东西,但我不认为这可以在上面的例子中使用HTML。有没有什么魔法在同一个请求中提交两个输入字段('a'和'b')? –

+0

我在我的答案中添加了详细信息。我从不喜欢ModalWindow生成如此多的HTML,包括,但我从来没有找到更好的解决方案来覆盖所有情况。 – svenmeier

相关问题