Вопрос:

Избегайте отправки формы, если входное значение не изменилось

jsf jsf-2

2345 просмотра

2 ответа

160 Репутация автора

Есть ли способ в 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>
Автор: uday Источник Размещён: 05.07.2012 03:36

Ответы (2)


2 плюса

14638 Репутация автора

Решение

Короткий ответ - нет, в простом 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>
Автор: Elias Dorneles Размещён: 05.07.2012 12:19

0 плюса

324 Репутация автора

Простой подход

var submitButton = document.getElementById("submit");
submitButton.disabled = true;
document.getElementsByName("fieldName")[0].addEventListener('input', function (evt) {
 if(this.value != document.forms["formName"]["fieldName"].value){
    submitButton.disabled = false;
 }else{
    submitButton.disabled = true;
 }
});
Автор: Shiplu Размещён: 11.08.2019 07:49
Вопросы из категории :
32x32