私は同じクラスの2つのフォームをページに持っています。これらのフォームは同じ要素で全く同じです。そのうちの1つを提出すると、内部の要素にアクセスしようとします。ここではフォームがどのように見えるかです:フォーム内のこの検索ラベルが機能しない
<form role="form" class="login-form" id="login-form">
{% csrf_token %}
<div class="form-group">
<div class="input-icon">
<i class="icon fa fa-user"></i>
<input type="text" class="form-control" name="email" placeholder="Username" id="email">
</div>
</div>
<div class="form-group">
<div class="input-icon">
<i class="icon fa fa-unlock-alt"></i>
<input type="password" class="form-control" placeholder="Password" name="password" id="password">
</div>
</div>
<div>
<!--input type="checkbox" id="remember" name="rememberme" value="forever" style="float: left;"-->
<label style="display: none; color: red;" id="incorrect_info">Veuillez vérifier vos informations</label>
</div>
<button class="btn btn-common log-btn">Se connecter</button>
</form>
今、私は要素にアクセスしようとするのjavascript:
$('.login-form').submit(function(e){
e.preventDefault();
// Get information
email = $(this).find('input[id="email"]').val();
pass = $(this).find('input[id="password"]').val();
$(this).find('label[id="incorrect_info"]').css('display','block');
});
このコードは見つからないラベルのための入力のために動作しますが、ではありません。
EDIT:
申し訳ありませんが、ここでは、コードがどのように見えるか、実際にあります。 findはajaxで呼び出されます。
$('.login-form').submit(function(e){
e.preventDefault();
// Get information
email = $(this).find('input[id="email"]').val();
pass = $(this).find('input[id="password"]').val();
$.ajax({
.......
}).done(function (data) {
if (data.success) {
window.location.href = data.url;
}
else {
$(this).find('label[id="incorrect_info"]').css('display','block');
}
});
});
https://jsfiddle.net/gtbgrmb4/ それは動作しますが、なぜ? – Oleksandr
あなたのコードは、孤立して正常に動作するようです:https://jsfiddle.net/f6dgk2kw/。問題の実際の例を教えてください。また、あなたのコードは、重複した 'id'属性を使用していることを暗示しています。これは無効です。属性セレクタを使用して要素をIDで検索する方法を説明します。代わりにクラスを使用 –
同じIDを使用するのではなく、同じクラスを使用しない特定の理由はありますか?参照してください:[リンク](http://stackoverflow.com/a/5611975/2271768) – Kartal