【问题标题】:Is there validate-able way to use HTML label and input elements and the input not having an id?是否有可验证的方式来使用 HTML 标签和输入元素并且输入没有 id?
【发布时间】:2012-10-24 09:55:31
【问题描述】:

我将Jquery Mobile 用于一个应用程序,该应用程序在每个页面上都有一个登录弹出窗口。问题是,Jquery Mobile 在 DOM 中总是至少有 2 个页面,所以我在 DOM 中会有两个弹出窗口和登录表单,迫使我想办法避开duplicate id-attributes

我通过省略登录表单输入中的id 属性来解决这个问题,所以我这样做:

 <label for="email" class="inFieldLabel">#tx_email#</label>
 <input autocomplete="off" type="email" name="email" value="#XMLFormat( lostPass.email )#" class="required">

这在视觉上效果很好,但会产生验证错误,因为:

 The for attribute of the label element must refer to a form control.

问题
有没有办法在不使用id 属性的情况下通过验证?什么是解决方法?

注意:我不能使用全局登录弹出窗口,因为 Jquery Mobile 目前不支持,所以我被困在每个页面上的弹出窗口。

感谢您的见解!

【问题讨论】:

  • 不是答案,尽管您不必使用带有 id 的标签。您也可以简单地用它包裹标签的 tgt 以获得相同的效果。即 。但是 64,000 的问题似乎是为什么不使用 ids?
  • 好点。让我看看这是否适用于 JQM。

标签: html validation input label


【解决方案1】:

将标签应用到的表单控件放在标签内。

<label> text <input> </label>

【讨论】:

  • 是的。这就是我最终这样做的方式。我不得不重写一些 Jquery Mobile 自定义 CSS,但这是我现在要做的。谢谢!
【解决方案2】:

假设两件事:您不会使用 ID 来设置表单样式,并且每个弹出窗口周围都有一个 FORM 标签。此代码将在表单元素的 ID/FOR 中附加一个随机数。您可能还需要将此编号传递给您的验证例程。

jQuery("FORM").each(function()
{
  var randomNum = Math.random()*1000;
  var jForm = jQuery(this);
  jForm.find("INPUT").each(function()
  {
    this.id+=randomNum;        
  });
  jForm.find("LABEL").each(function()
  {
    jQuery(this).attr("for",jQuery(this).attr("for")+randomNum);
  });
});

...

validateForm(form, randomNum);

这是使表单上的 ID 保持唯一性的一种方法。

我想我假设您也在使用 Validate 插件。如果有任何帮助,您可以为您的表单/元素使用多个非唯一 ID,只要您通过验证唯一选择器,例如“#page-1 #popup-form #myInput”或“#page -2 #popup-form #myInput"。

更多修改:

等等,你在找这个吗?您可以使用表单对象通过名称而不是 id 来引用表单及其控件。

<form name="formNameAttribute">
  <input name="inputNameAttribute" value="some value" />
</form>

<script>
var inputValue=document.forms["formNameAttribute"]["inputNameAttribute"].value;
</script>

【讨论】:

  • 嗯。那将是一个选择,但肯定会增加复杂性:-)我想看看我是否可以先按照 cmets 做“包装”:-)
  • 实际上,如果您只需要 wrap 的话,它是一个很好的解决方案。
  • 是的,但完全破坏了我的 css... 仍在尝试更新。如果你想让它成为一个答案,请检查
  • 给我一点发帖。我的输入和标签很好地定位在列表项中。说 35%/65%。如果我现在将输入包装在 35% 标签内,这看起来……不好:-)
猜你喜欢
  • 1970-01-01
  • 2012-01-08
  • 2012-03-24
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
相关资源
最近更新 更多