火狐4:有没有办法删除所需的formsinput的红色边框?

当需要在表单字段中定义时,Firefox 4会自动向该元素显示红色边框,甚至在用户点击提交button之前。

<input type="text" name="example" value="This is an example" required /> 

我觉得这对于用户来说是一件令人不安的事情,因为他们一开始并没有犯错误。

我想在初始状态下隐藏红色的边框,但是当用户点击发送button时,如果缺less标记为必填的字段,则会显示该边框。

我看着:required:invalid新的伪select器:invalid ,但更改是在validation之前和之后 。 (来自Firefox 4需要的inputforms红色边框/大纲 )

有没有办法在用户提交表单之前禁用红色边框,并显示是否有一些缺失的字段?

这是一个有点棘手,但我已经build立了这个exmaple: http : //jsfiddle.net/c5aTe/这是为我工作。 基本上这个伎俩似乎越来越有占位符文本是无效的。 否则,你应该能够做到这一点:

 input:required { box-shadow:none; } input:invalid { box-shadow:0 0 3px red; } 

或类似的东西…

由于FF4决定validation您的占位符文本(不知道为什么…)在小提琴(小哈克 – 使用!important )的解决scheme是必需的。

希望有所帮助!

编辑

卫生署! – 我感觉好傻。 我已经更新了我的小提琴: http : //jsfiddle.net/c5aTe/2/ – 您可以使用:focus伪类,以保持元素样式,如果用户正在键入有效。 当项目失去焦点时,如果内容无效,这仍然会以红色突出显示,但是我认为只有这么多的devise行为才能做到。

HTH 🙂


接受后编辑:

OP请求的例子总结(请注意,前两个仅适用于FF4 – 不是Chrome

  1. 修复FFvalidation您的占位符文本: http : //jsfiddle.net/c5aTe/
  2. 修正FFvalidation,你键入: http : //jsfiddle.net/c5aTe/2
  3. JS解决scheme切换风格/validation: http : //jsfiddle.net/c5aTe/4

从Firefox 26开始,用于标识无效的必需字段的实际CSS如下所示(来自forms.css):

 :not(output):-moz-ui-invalid { box-shadow: 0 0 1.5px 1px red; } 

要在其他浏览器中复制,我使用:

 input:invalid { box-shadow: 0 0 1.5px 1px red; } 

我玩的像素设置,但我永远不会猜测的1.5像素没有看moz源。

要禁用它,你可以使用:

 input:invalid { box-shadow: none; } 

这是一个非常简单的解决scheme,为我工作。 我基本上把丑陋的红色变成了非常漂亮的蓝色,这是非必填字段的标准颜色,还有一个网页公约:

 :required { border-color: rgba(82, 168, 236, 0.8); } 

这对我很好:

 input:invalid { -moz-box-shadow: none; } 

请试试这个,

$( “forms”)ATTR( “NOVALIDATE”,真)。

在您的全球.js文件或标题部分的表单。