名称为...的无效表单控件不可聚焦

时间:2017-02-17 17:54:02

标签: javascript jquery

名称为''additional_here_about_other_field'的无效表单控件无法调焦。 此代码用于具有四个下拉列表的选择字段。需要使用以下几个选项:#additional_here_about_other_field#additional_who_is_your_orthodontist_field。选择必填字段后,您必须在另一个显示/取消隐藏的文本字段中输入其他数据。当您选择所需选项然后切换到需要或不需要的选项并尝试提交表单时,您将获得不可聚焦的错误。看来,当您选择一个必填字段然后切换到另一个字段时,前一个必需字段虽然现在已隐藏但仍在等待验证?

jQuery(document).ready(function () {
	
	if(jQuery("#additional_here_about_other_field").length > 0){
		jQuery("#additional_here_about_other_field").hide();
		jQuery("#additional_how_did_u_hear_about_harp").change(function(){
			if(jQuery(this).val() == 'Other (please specify)'){ jQuery("#additional_here_about_other_field").show().prop('required',true); }
			else { jQuery("#additional_here_about_other_field").hide(); }
		});
	}
	if(jQuery("#additional_who_is_your_orthodontist").length > 0){
		jQuery("#additional_who_is_your_orthodontist").hide();
		jQuery("#additional_how_did_u_hear_about_harp").change(function(){
			if(jQuery(this).val() == 'Orthodontist Referral'){ jQuery("#additional_who_is_your_orthodontist").show().prop('required',true); }
			else { jQuery("#additional_who_is_your_orthodontist").hide(); }
		});
	}
});

HTML snippet

<select name="additional_how_did_u_hear_about_harp" id="additional_how_did_u_hear_about_harp" class="select " data-allow_clear="true" data-placeholder="How Did You Hear About The Harp?" >
	<option value=""  selected='selected'></option>
	<option value="Patient" >Patient</option>
	<option value="Orthodontist Referral" >Orthodontist Referral</option>
	<option value="Trade Show" >Trade Show</option>
	<option value="Mailer" >Mailer</option>
	<option value="Other (please specify)" >Other (please specify)</option>
</select>

<div class="clear"></div>
<p>		
	<input type="text" class="input-text " name="additional_here_about_other_field" id="additional_here_about_other_field" placeholder="Other (please specify)"   value=""  />
</p>
<div class="clear"></div>
<p>		
	<input type="text" class="input-text " name="additional_who_is_your_orthodontist" id="additional_who_is_your_orthodontist" placeholder="Who is your orthodontist?"   value=""  />
</p>
<div class="clear"></div>

3 个答案:

答案 0 :(得分:15)

仅仅因为表单控件被隐藏并不意味着它不是必需的。而且由于它是必需的,但隐藏的浏览器无法集中表单控件。

您拥有的每个地点.hide()都会将其更改为.hide().prop('required',false)以解决您的问题。

答案 1 :(得分:1)

从字段中删除“必需”,并使用JavaScript逻辑来查看是否需要。

答案 2 :(得分:0)

首先,从字段中删除“必需”。然后使用以下jQuery代码:

$('#your_input_or_select_id').prop('required',true);   //use this to add required while document ready
$('#your_input_or_select_id').removeAttr('required'); //use this to remove required whenever you want