2

Jquery Mobileすべてのページにログインポップアップがあるアプリケーションに使用しています。問題は、Jquery Mobile の DOM には常に少なくとも 2 つのページがあるため、DOm に 2 つのポップアップとログイン フォームがあり、回避する方法を見つけなければならないこと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 でサポートされていないため使用できません。

洞察をありがとう!

4

2 に答える 2

1

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 を一意に保つ 1 つの方法です。

Validateプラグインも使用していると思います。"#page-1 # popup -form #myInput" や "#page-2 #popup-form #マイインプット」。

その他の編集:

待って、これを探していますか?フォーム オブジェクトを使用して、id の代わりに名前でフォームとそのコントロールを参照できます。

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

<script>
var inputValue=document.forms["formNameAttribute"]["inputNameAttribute"].value;
</script>
于 2012-10-24T11:03:57.550 に答える
1

ラベルが適用されるフォーム コントロールをラベル内に配置します。

<label> text <input> </label>
于 2012-11-13T12:05:18.240 に答える