Forms 在JSF表单中的任何值更改上启用按钮

Forms 在JSF表单中的任何值更改上启用按钮,forms,jsf,button,primefaces,Forms,Jsf,Button,Primefaces,在jsf表单中,我有多个字段,包括文本、复选框、下拉列表等,显示DB中的值。我希望在默认情况下禁用submit按钮,并且只有在用户更改表单中的任何字段时才可以单击submit按钮。请帮忙 未测试,但我会简单地使用以下内容: $(document).ready(function() { $('#formId input[type="submit"]').attr('disabled','disabled'); $('#formId').change(function(){ $('#

在jsf表单中,我有多个字段,包括文本、复选框、下拉列表等,显示DB中的值。我希望在默认情况下禁用submit按钮,并且只有在用户更改表单中的任何字段时才可以单击submit按钮。请帮忙

未测试,但我会简单地使用以下内容:

$(document).ready(function() {
    $('#formId input[type="submit"]').attr('disabled','disabled');
    $('#formId').change(function(){ $('#formId input[type="submit"]').removeAttr('disabled'); });
});
如果未使用视图中已有的任何jQuery函数(例如任何PrimeFaces ajax按钮),则可能需要添加:

<h:outputScript library="primefaces" name="jquery/jquery.js" />

对于一个简单的表单,您可以使用用户提到的jQuery插件

编辑:

该插件非常简单易用,而且功能强大,因为例如,如果在输入字段中还原更改,您将再次禁用按钮

只需确保包含js文件:

<h:outputScript name="path/jquery.are-you-sure.js"/>
之后,要启用和禁用提交按钮,您必须添加:

//All disabled by default
$('#idofyourform').find('button[type="submit"]').attr('disabled', 'disabled');
//Enabled all when there are changes
$('#idofyourform').bind('dirty.areYouSure', function () {
    $(this).find('button[type="submit"]').removeAttr('disabled');
});
//Disable all when there aren't changes
$('#idofyourform').bind('clean.areYouSure', function () {
    $(this).find('button[type="submit"]').attr('disabled', 'disabled');
});
文档就绪功能中的两个代码

请注意,我使用了按钮[type=“submit”],这是p:commandButton默认呈现的内容。如果是您的情况,您可以使用输入

注意:此插件还添加了OP没有要求的额外功能(当您导航而不保存更改时的对话框检查)。如果需要,可以通过执行以下操作禁用此功能:

$('#idofyourform').areYouSure( {'silent':true} );

这不是一个好的答案,因为它被认为是唯一的链接。请在答案中添加一个小例子。谢谢你的提示!我添加了如何使用插件
$('#idofyourform').areYouSure( {'silent':true} );