我正在尝试在我的表单中使用HTML5约束验证来帮助用户在提交之前在客户端发现错误(显然也进行服务器端验证)。
我遇到一种情况,我需要根据用户在其他字段中的选择有条件地将某些字段设置为必填或可选。但是,在 Firefox 中,在较早的某个时间点需要无线电输入后,我无法将无线电输入设置为可选。我已经尝试删除必需的属性并将 this.willValidate 设置为这些无线电输入的 false,但 Firefox 似乎仍然认为无论我做什么,它们都是必需的。
下面是一个演示:http://jsfiddle.net/rrud/fUcUn/
有没有人对我可以在 JavaScript 中尝试的其他东西有想法,告诉 Firefox 在需要这些无线电时将它们设置为可选?
我的例子在Chrome和Opera中效果很好,在Firefox中,所有非无线电输入的行为都符合预期......所以也许这只是火狐中的一个错误?我在Win7上使用Firefox 13.0。
使用 jQuery 的 prop 方法: $.fn.prop
-> $('input').prop('required', true|false);
http://jsfiddle.net/trixta/fUcUn/12/
只需将其添加到您的代码中
this.checked = false;
您的代码应如下所示
$(function() {
$("#require").click(function() {
$("input, textarea, select").attr('required', 'required');
});
$("#unrequire").click(function() {
$("input, textarea, select").removeAttr('required').each(function() {
this.willValidate = false;
this.checked = false;
});
});
});
检查这个小提琴 http://jsfiddle.net/kabichill/ktfV6/