1

我试图在我的表单中使用HTML5 约束验证来帮助用户在提交之前发现客户端错误(并且显然也进行服务器端验证)。

我有一种情况,我需要根据用户在其他字段中选择的内容有条件地使某些字段成为必填或可选。但是,在 Firefox 中,在较早的时候需要无线电输入后,我无法将它们设为可选。我已经尝试在这些无线电输入上删除 required 属性并将 this.willValidate 设置为 false,但无论我做什么,Firefox 似乎仍然认为它们是必需的。

这是一个演示:http: //jsfiddle.net/rrud/fUcUn/

有没有人对我可以在 JavaScript 中尝试告诉 Firefox 在需要这些收音机时使它们成为可选的其他方法有什么想法?

我的示例在 Chrome 和 Opera 中运行良好,在 Firefox 中,所有非无线电输入的行为都符合预期……所以这可能只是 Firefox 中的一个错误?我在 Win7 上使用 Firefox 13.0。

4

2 回答 2

2

使用 jQuery 的 prop 方法:$.fn.prop

-> $('input').prop('required', true|false);

http://jsfiddle.net/trixta/fUcUn/12/

于 2012-06-18T20:57:38.213 回答
0

只需将此添加到您的代码中

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/

于 2012-06-12T05:29:46.900 回答