2016-10-20 4 views
1

私のAJAX呼び出し検証は、ボタンが押されて入力したときに動作しますが、

$("#go_btn").on('click',function(){ 

       $.ajax({ 

         url: '<c:url value="/filter/save" />', 

         data: $('input,select',"#requestForm").not(".hint").serialize(), 
         type: 'POST', 
         cache: false, 
         success: function(data){      

          if(data.success == true){ 
           $('.error',"#requestForm").hide().removeData('errorsData'); 

           $("#requestForm").submit(); 

          }else if(data.success == false){ 
           $('.error',"#requestForm").hide().removeData('errorsData'); 
           var errors = data.errors;    
           for (var key in errors) {     
            var errorDesc = errors[key]; 
            var $question = $('input[name="'+key+'"],select[name="'+key+'"]',"#requestForm").parents('td'); 
            var $errorDiv = $('div.error',$question); 
            var errorsData = $errorDiv.data('errorsData'); 

            if(!errorsData){ 
             errorsData = new Array();        
             $errorDiv.data('errorsData',errorsData);       
            } 

            errorsData[errorsData.length] = errorDesc; 

            var errorHTML = ''; 
            for(var i=0 ; i < errorsData.length;i++){ 
             if(i>0){ 
               errorHTML += '<br />'; 
             } 
             errorHTML += errorsData[i]; 

            } 

            $('.error_message',$errorDiv).html(errorHTML); 
            $errorDiv.show(); 

            $(this).scrollTop(0); 
            $('input[name="'+key+'"]').focus(); 
            $('select[name="'+key+'"]').focus(); 

           } 
          } 
         }  
       }); 

私のHTMLコード

<a href="#" title="click next" id="go_btn" style="color:#fff;text-decoration:none;"> 

コントローラメソッド

@RequestMapping(value = "/filter/save", method = RequestMethod.POST) 

@ResponseBody 
public Map<String, Object> saveFilterDetails(
     @ModelAttribute(value = "bean") Bean bean, 
     BindingResult result, Model model) { 

    Map<String, Object> output = new HashMap<String, Object>(); 
    Map<String, String> fieldErrors = new HashMap<String, String>(); 

    if (bean.getIndustryId() == 0 || bean.getIndustryId() <= 0) { 
     result.rejectValue("industryId", "bean.filter.industry.mandatory"); 
    } 

    if (bean.getRoleId() == 0 || bean.getRoleId() <= 0) { 
     result.rejectValue("roleId", "bean.filter.role.mandatory"); 
    } 

    ValidationUtils.rejectIfEmptyOrWhitespace(result, "customerName", 
      "bean.customername.mandatory"); 


    if (result.hasErrors()) { 
     output.put("success", false); 

     for (FieldError fieldError : result.getFieldErrors()) { 
      try { 
       String value = messageSource.getMessage(fieldError, null); 
       fieldErrors.put(fieldError.getField(), value); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } 

     output.put("errors", fieldErrors); 
     return output; 
    } 
    else 
    { 
     output.put("success", true); 

     return output; 
    } 

} 

検証をボタンをクリックする上で動作しませんユーザーがボタンをクリックしたときに機能しますが、ユーザーがEnterキーを押したときには機能しません。 Enterキー機能を自分のコードにバインドして動作させる方法

編集:

私のフォーム

<form:form id="requestForm" method="post" modelAttribute="bean" Action="${pageContext.request.contextPath}/social" > 
. 
. 
. 
    <a href="#" title="click next" id="go_btn" style="color:#fff;text-decoration:none;"> 
. 
. 
. 
</form:form> 
+1

これは、フォームを送信するために 'a'要素を使用しているからです。その要素をフォーム内の送信ボタンに変更すると、デフォルトでその動作が得られます。 –

+0

入力タイプiを送信するとajaxコールが発生しない –

+0

入力はどこですか?関連するHTMLを含めていない –

答えて

2

<a> - タグを交換し、代わりに<button type="submit">を挿入します。

+0

それはイベントを防ぎます。 –

関連する問題