объединение двух кодов JavaScript в один код для отображения предупреждений - PullRequest
0 голосов
/ 03 марта 2012

В моем first javascript я показываю alerts, если какой-либо text box с классом check остается empty до submitting, если все заполнены, тогда в second javascript я показываю предупреждение, что confirm submit?.Но как сделать эти два как один код JavaScript?

<script type="text/javascript">      
  jQuery('input.test').not('[value]').each(function() {
      var blankInput = jQuery(this);
      //do what you want with your input
  });

  function confirmation(domForm) { 
      var jForm = jQuery(domForm); 
      var jFields = jForm.find('.check');; 
      var values = jFields.serializeArray(); 
      var failedFields = []; 

      for(var i = 0; i < values.length; i++) { 
          var o = values[i]; 
          if(o.value == null || o.value.length == 0) { 
              failedFields.push(jFields.filter('[name=' + o.name + ']').attr('title')); 
          } 
      } 

      if(failedFields.length > 0) { 
          var message = ''; 

          if(failedFields.length == values.length) { 
              message = 'fill all fields please'; 
          } 
          else { 
              message = 'please fill the fields:'; 
              for(var i = 0; i < failedFields.length; i++) { 
                  message += "\n"; 
                  message += failedFields[i]; 
              } 
          } 

        csscody.alert(message); 

        return false; 
    } 

    var answer = confirm("Confirm save?")

if (answer){
        window.location = "confirmsubmit.jsp";
}
else{       
        return false;
}

    return true; 
}
</script>

JavaScript для отображения confirm submit оповещения после заполнения текстовых полей класса check

<script type="text/javascript">
 $().ready(function() {
     $('#btn_submit').click(function(e) { 
         e.preventDefault();

         var that = this;
         var text = "Confirm save?";

         csscody.confirm(text, {
            onComplete: function(e) {
                if (e) {
                    window.location = "confirmsubmit.jsp";
                }
                else {
                    return false;
                }
            }
         })
     });
 }); 
</script>

html

<form action="confirmsubmit.jsp" onsubmit="return confirmation(this)" method="POST">
    <input type="text" class="check"/>//alert if text box is left empty
    <input type="submit" id="btn_submit"/>
</form>

1 Ответ

0 голосов
/ 03 марта 2012

Не понимаю, зачем вам второй сценарий. Вы вызываете функцию проверки onsubmit. Зачем менять window.location, если вы установили тот же action? Нет смысла привязывать ту же функцию к событию click кнопки.

Вам не нужен второй скрипт , но нужно изменить первый скрипт.

function confirmation(domForm) {

    // Your other code  
    // ...  

    if(failedFields.length > 0) { 

        // Your other code
        // ...

        csscody.alert(message); 
        return false; 
    } 

    // Your other code
    // ...

/* Solution before your comment:

    var answer = confirm("Confirm save?")
    // This is already the action-target: window.location = "confirmsubmit.jsp";
    return answer;
*/

     var text = "Confirm save?";

     csscody.confirm(text, {
        onComplete: function(e) {
            if (e) {
                // Probably doesn't work because this seems to be asynchronous?
                return true;
            }
            else {
                return false;
            }
        }
     });

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...