为什么生成的输入id和名称在liftscreen中是不同的

时间:2013-07-12 09:15:29

标签: html scala lift

在扩展LiftScreen的屏幕类中,我定义了一个文本字段:

class MyScreen extends LiftScreen {
  val stuffName = text("Stuff Name", "", trim, valMinLen(2, "2 chars at least"), 
      "class" -> "input-xlarge")
}

它生成html如下:

<input style="float:left; margin-right: 10px" id="F666221395073GHLIXL" value="" 
    class="input-xlarge" type="text" name="F666221395059FXOCFK">

您可以看到idname属性,具有不同的生成值。用于两个属性值的是什么?为什么他们不同?我以为它们应该是一样的。


更新

Lift将使用这些生成的值来匹配它在服务器端存储的函数并运行它。

对于单个输入,一个唯一值就足够了,可能是id,也许是name,但为什么有两个不同的值?

如果其中一个没用,则根本不需要升降机。

1 个答案:

答案 0 :(得分:0)

在HTML表单中,idname不适用于相同的内容。 XML要求每个id都是唯一的。 name不是这种情况。请考虑以下形式:

<form ...>
  <input type="radio" value="1" name="option" id="option1" />
  <label for="option1">Option 1</label>
  <input type="radio" value="2" name="option" id="option2" />
  <label for="option1">Option 2</label>
  <input type="radio" value="3" name="option" id="option3" />
  <label for="option1">Option 3</label>
</form>

三个name标记中的input必须相同才能实现所需的选择行为(三个中的一个)。但是,id字段必须是唯一的(根据规范和label标记)。

Lift显然旨在生成可支持此类用例的HTML,因此在这种情况下必须单独生成idname。你看到的可能只是泛化的结果(毕竟没有要求 nameid相等)。