JSF2中是否有任何方法可以避免表单提交, 或者在提交表单时根本不做任何事情?
我们在表单中有几个输入字段(20个输入字段), 其中填充了一些默认值, 如果没有更改任何值,那么我们不想提交表单。
JSF中有没有直接的方法可以实现这个目标?
<h:form id="summaryForm" prependId="false">
<h:inputText id="inputField1" value="#{summaryBean.inputFieldValue1}" />
<h:inputText id="inputField1" value="#{summaryBean.inputFieldValue2}" />
<h:inputText id="inputField1" value="#{summaryBean.inputFieldValue3}" />
<h:inputText id="inputField1" value="#{summaryBean.inputFieldValue4}" />
<h:inputText id="inputField1" value="#{summaryBean.inputFieldValue5}" />
<h:commandButton action="#{summaryBean.submitSummary}" />
</h:form>
答案 0 :(得分:2)
简短的回答是否定的,在简单的JSF中,你无法做到这一点。 不过,您可以在客户端使用一些JavaScript和jQuery来完成。
... include jQuery somewhere here ...
<script>
var anyInputChanged = false;
var checkIfAnyValueChanged = function(){ return anyInputChanged; };
(function($) {
$(function() {
// set variable anyInputChanged to TRUE on event 'onchange',
// for the fields with class "submitOnlyIfChanged"
$('.submitOnlyChanged').change(function(){ anyInputChanged = true; });
});
})(jQuery);
</script>
<h:form id="summaryForm" prependId="false">
<!-- set up all the fields with the class "submitOnlyIfChanged" -->
<h:inputText class="submitOnlyIfChanged" id="inputField1"
value="#{summaryBean.inputFieldValue1}" />
<h:inputText class="submitOnlyIfChanged" id="inputField2"
value="#{summaryBean.inputFieldValue2}" />
<h:inputText class="submitOnlyIfChanged" id="inputField3"
value="#{summaryBean.inputFieldValue3}" />
<!-- set up a check if any field was changed on button click -->
<h:commandButton onclick="return checkIfAnyValueChanged();"
action="#{summaryBean.submitSummary}" />
</h:form>
答案 1 :(得分:0)
简单的方法。
var allFields = document['formName'].elements;
var submit = document.getElementById("submit");
submit.disabled = true;
var fieldsValue = [];
var x;
var y=0;
for( var i=0; i<allFields.length; i++ ){
fieldsValue[i] = document.forms["formName"][allFields[i].name].value;
document.getElementsByName(allFields[i].name)[0].addEventListener('input', function (evt) {
x = fieldsValue.indexOf(this.value);
x < 0 ? y = y+1 : y = y-1;
y > 0 ? submit.disabled = false : submit.disabled = true;
});
}