Javascript 当表单有效时,HTML/引导验证表示无效

Javascript 当表单有效时,HTML/引导验证表示无效,javascript,jquery,html,forms,twitter-bootstrap,Javascript,Jquery,Html,Forms,Twitter Bootstrap,我有一个使用引导的HTML表单。在此表单上,我有一个选择列表必填字段。当用户从这个列表中选择“其他”选项时,我有一个隐藏的文本输入字段单行,然后显示该字段,供用户提供进一步的详细信息。此文本输入只有在可见时才是必填字段-显示/隐藏它的javascript还添加/删除所需属性 这几乎可以正常工作。如果我从下拉列表中选择Other,则会显示文本框,如果我没有在其中输入值,则会出现预期的验证错误。问题是,如果我选择“其他”,则显示文本字段,将焦点放在文本字段中,然后进行制表,使其显示验证错误消息,然后

我有一个使用引导的HTML表单。在此表单上,我有一个选择列表必填字段。当用户从这个列表中选择“其他”选项时,我有一个隐藏的文本输入字段单行,然后显示该字段,供用户提供进一步的详细信息。此文本输入只有在可见时才是必填字段-显示/隐藏它的javascript还添加/删除所需属性

这几乎可以正常工作。如果我从下拉列表中选择Other,则会显示文本框,如果我没有在其中输入值,则会出现预期的验证错误。问题是,如果我选择“其他”,则显示文本字段,将焦点放在文本字段中,然后进行制表,使其显示验证错误消息,然后从选择列表中选择另一个值,而不在文本字段中输入值。它隐藏文本字段并按预期删除所需属性。然后表单就有效了-如果我单击submit按钮,它将按预期提交

问题似乎是css可能来自引导验证?。在我从选择列表中选择另一个值以隐藏文本字段后,submit按钮仍处于无效状态,即灰显且没有!鼠标指针当我悬停在它上面。如果我点击它,它会提交OK,这表明它工作正常,但它看起来不像,从用户的角度来看,这并不理想

在浏览器的开发工具中查看它,我可以看到禁用的类在从文本字段中删除必需的属性后仍然应用于submit按钮,尽管表单是有效的。我可以在上面显示的更改事件中添加一点javascript,以便在隐藏此文本字段时删除该属性,但一旦混合中有其他字段,这将是一个问题,因为即使此字段有效,页面上也可能有其他无效字段要求提交按钮处于禁用状态

HTML和javascript:

//将更改事件处理程序添加到TemplateName下拉列表中,以显示/隐藏其他选项的文本框 $TemplateName.changefunction{ 如果$TemplateName.val==其他{ $TemplateNameTextGroup.showfast; $TemplateNameText.attrrequired,true; }否则{ $TemplateNameText.removeAttrrequired; $TemplateNameTextGroup.hidefast; } }; 模板名称 请选择。。。 选择1 选择2 选择3 选择4 另外 提供细节 提交
如果您在任何脚本语言中使用show&hide方法,那么将需要对样式css进行更改。显示将为“无”或“显示”。
所以基本上DOM元素将被加载,并且只有基于显示或隐藏的样式更改。相反,不要在脚本中加载DOM元素。

如果您在任何脚本语言中使用show&hide方法,则将更改样式CSS。显示将为“无”或“显示”。
所以基本上DOM元素将被加载,并且只有基于显示或隐藏的样式更改。相反,不要在脚本中加载DOM元素。

我找到了解决这个问题的方法。基本上,在删除所需属性后,我会立即在文本框上显式触发模糊事件。然后,这将强制验证再次检查该字段,然后它会注意到该字段不是必需的,因此空值是有效的,从而将submit按钮置于其有效状态

更新的javascript:

//将更改事件处理程序添加到TemplateName下拉列表中,以显示/隐藏其他选项的文本框 $TemplateName.changefunction{ 如果$TemplateName.val==其他{ $TemplateNameTextGroup.showfast; $TemplateNameText.attrrequired,true; }否则{ $TemplateNameText.removeAttrrequired; $TemplateNameText.blur; $TemplateNameTextGroup.hidefast; }
}; 我找到了解决这个问题的办法。基本上,在删除所需属性后,我会立即在文本框上显式触发模糊事件。然后,这将强制验证再次检查该字段,然后它会注意到该字段不是必需的,因此空值是有效的,从而将submit按钮置于其有效状态

更新的javascript:

//将更改事件处理程序添加到TemplateName下拉列表中,以显示/隐藏其他选项的文本框 $TemplateName.changefunction{ 如果$TemplateName.val==其他{ $TemplateNameTextGroup.showfast; $TemplateNameText.attrrequired,true; }否则{ $TemplateNameText.removeAttrrequired; $TemplateNameText.blur; $TemplateNameTextGroup.hidefast; }
};您好,谢谢您的回复,但我不确定我是否理解答案。显示/隐藏部分工作正常。向文本框添加/删除所需属性也可以正常工作。只是引导验证似乎没有注意到
更改并继续显示带有禁用样式的按钮,即使表单有效并在单击按钮时成功提交。您好,感谢您的回复,但我不确定我是否理解答案。显示/隐藏部分工作正常。向文本框添加/删除所需属性也可以正常工作。只是引导验证似乎没有注意到更改,并且一直显示带有禁用样式的按钮,即使表单有效并且在单击按钮时成功提交。