Javascript HTML5/CSS3是否可以对非表单输入元素应用:无效和:必需?

Javascript HTML5/CSS3是否可以对非表单输入元素应用:无效和:必需?,javascript,forms,html,css,Javascript,Forms,Html,Css,我正在使用一个样式化表单,结合了许多jQuery插件来帮助设置表单元素的样式,例如和。这些插件隐藏原始表单输入,并用一组可设置样式的可选HTML元素等替换它们。。唯一的问题是,如果用户试图提交表单而没有填写必填字段,他们似乎无法处理[required]属性并应用浏览器的Firefox、Chrome box阴影效果。有没有一种简单的方法可以将这些[必需的]属性转换为替换元素?我只想扩展插件,让它们将[required]属性复制到替换元素,但我怀疑标签是否支持[required]。我在互联网上到处找

我正在使用一个样式化表单,结合了许多jQuery插件来帮助设置表单元素的样式,例如和。这些插件隐藏原始表单输入,并用一组可设置样式的可选HTML元素等替换它们。。唯一的问题是,如果用户试图提交表单而没有填写必填字段,他们似乎无法处理[required]属性并应用浏览器的Firefox、Chrome box阴影效果。有没有一种简单的方法可以将这些[必需的]属性转换为替换元素?我只想扩展插件,让它们将[required]属性复制到替换元素,但我怀疑标签是否支持[required]。我在互联网上到处找过,但没有找到多少有用的指南。有没有我缺少的解决方法?我就是想不出怎么做

我想我可以使用成熟的客户端验证,但我正试图将jQuery/JavaScript的干预控制在最低限度。如果没有一个好的方法,我就用一个表单验证插件或者别的什么。现在,为了保持样式的一致性,我已经用一些CSS禁用了所有的框阴影效果:

input:invalid, input:required,
textarea:invalid, textarea:required,
select:invalid, select:required {
    -webkit-box-shadow: none;
    -moz-box-shadow: none;
    -box-shadow: none;
}

如果在输入之后添加新元素,您可以使用input:required+.newElementClass或类似的东西来匹配它。那么您的意思是插件是否隐藏了原始元素,然后在同一父容器中立即添加替换元素?我相信情况确实如此。我不知道input:required+。newClass如何帮助浏览器在未完成表单提交尝试时以红色突出显示它们。您只是建议使用jQuery选择器来定位它们吗?是的,但请检查生成的源代码以确保。否,input:required是一个选择器,用于设置表单元素的样式,该元素是必需的,为空。假设表单是在击键时更新的(在许多情况下不是真的),再次进行测试,那么您将能够突出显示尚未填写的字段。因此,input:required相当于input:required+。someElementClass如果

遵循input元素,并且您正在尝试设置p.someElementClass的样式。好的,我在相关线程列表中找到了以下两个线程:这似乎适用于我的情况。然后我告诉jQuery找到select元素,并将.oninvalid处理程序应用于.effecthighlight,{color:ffaaa},3000高亮显示它们的傀儡替换,这似乎非常有效。我不知道存在无效事件。下一条注释中的代码太长。$input[required],select[required],textarea[required]。oninvalid,函数{$this.parent.effecthighlight,{color:ffaaa},3000;};这不是很好,但很管用,因为我在表格中设置了我的表单,这是因为我使用的数据是表格形式的。如果新元素是在输入之后添加的,你可以使用input:required+.newElementClass或类似的东西来匹配它。那么你的意思是如果插件隐藏了原始元素,然后在同一父容器中立即附加它们的替换项?我相信情况确实如此。我不知道input:required+。newClass如何帮助浏览器在未完成表单提交尝试时以红色突出显示它们。您只是建议使用jQuery选择器来定位它们吗?是的,但请检查生成的源代码以确保。否,input:required是一个选择器,用于设置表单元素的样式,该元素是必需的,为空。假设表单是在击键时更新的(在许多情况下不是真的),再次进行测试,那么您将能够突出显示尚未填写的字段。因此,input:required相当于input:required+。someElementClass如果

遵循input元素,并且您正在尝试设置p.someElementClass的样式。好的,我在相关线程列表中找到了以下两个线程:这似乎适用于我的情况。然后我告诉jQuery找到select元素,并将.oninvalid处理程序应用于.effecthighlight,{color:ffaaa},3000高亮显示它们的傀儡替换,这似乎非常有效。我不知道存在无效事件。下一条注释中的代码太长。$input[required],select[required],textarea[required]。oninvalid,函数{$this.parent.effecthighlight,{color:ffaaa},3000;};这不是很好,但很有效,因为我使用的数据是表格性质的,所以我在表格中设置了我的表单。