レスポンシブ フォームを作成し、css メディア クエリを使用して画面幅に基づいてレイアウトを更新しています。
デスクトップ ビューとモバイル & タブレット ビューの間で、フォームのデザインが変わり、ラベル要素がデスクトップ幅の入力フィールドの上に配置されますが、画面がモバイル幅に縮小されるとデフォルトの入力フィールド値になります。
入力フィールドの値としてラベルにテキストを入れるために、次の関数を実行しています: HTML:
<div class="sectionHeader" id="updateDetails">My details <span class="sectionEdit">Edit</span></div>
<div class="sectionWrapper" id="myDetails">
<div class="formSection clearfix">
<fieldset>
<legend>Personal</legend>
<div class="ctrlHolder">
<div class="ctrlHolder">
<label class="hiddenLabel" for="givenName">Given name</label>
<input name="givenName" id="givenName" type="text" class="text long required"/>
</div>
<div class="ctrlHolder">
<label class="hiddenLabel" for="familyName">Family name</label>
<input name="familyName" id="familyName" type="text" class="text long required"/>
</div>
</div>
</fieldset>
</div>
</div>
<div class="formSectionFooter clearfix">
<input data-target="myInvestment" class="sectionNavigator button secondary" id="sectionDetailsNext" name="sectionDetailsNext" type="button" value="Continue"/>
</div>
$('#details .formSection fieldset .ctrlHolder label').each(function(){
//console.log($(this).text());
$(this).addClass('hiddenLabel');
$(this).next('input').val($(this).text());
});
}
フィールドが空であるかどうかがテストされ、フィールドがいっぱいになり、デフォルト値でエラーになるため、これはクライアント側の検証に大混乱を引き起こしています。特に、検証では、空のフィールドまたはデフォルト値 (「選択」、「名」など) がチェックされます。
$('.sectionNavigator').click(function(event){
//$(this).closest('.formSection').validate();
validateMy.form();
event.preventDefault();
// check for any empty fields in the preceding section
var $thisFormSection = $(this).closest('.formSection');
var $elementsWithErros = $thisFormSection.find('input[value=""]:visible, input[class="error"]:visible, select[value="Day"]:visible, select[value="Month"]:visible, select[value="Year"]:visible, select[value="Select"]:visible, select[value="Please select"]:visible, select[value="Given name"]:visible, select[value="Family name"]:visible');
var target = $(this).attr('data-target');
これにアプローチする方法について誰かアドバイスはありますか?