我正在构建一个响应式表单并使用 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');
有人对如何解决这个问题有任何建议吗?