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

时间:2014-09-22 08:36:24

标签: forms jsf button primefaces

我有多个字段,包括jsf格式的文本,checkbok框,下拉列表等,它显示来自DB的值。我希望默认情况下禁用提交按钮,并且只有在用户进行了更改时才可以点击表单中的任何字段。请帮忙!!

2 个答案:

答案 0 :(得分:1)

对于简单表单,您可以使用用户提到thishere jQuery插件。

修改

该插件使用起来非常简单,功能强大,因为例如,如果您在输入字段中还原更改,则会再次禁用您的按钮。

只需确保包含js文件:

<h:outputScript name="path/jquery.are-you-sure.js"/>

要使用它,你必须添加以下行:

$('#idofyourform').areYouSure();

之后,要启用和禁用提交按钮,您必须添加:

//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} );

答案 1 :(得分:0)

未经测试,但我只想使用以下内容:

$(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" />