2015-05-29 3 views
0

Работа с проверкой формы работает, но я не могу правильно запустить вызов Ajax. Достигается submitHandler, но вызов Ajax отсутствует. Я включил скрипку внизу, но, очевидно, вы не можете запускать аякс-звонки оттуда.Функция Ajax не попадает в submitHandler

$(".player-code, .submit").hide(); 

//VALIDATION 
$(function() { 
    $("#form").validate({ 
     rules: { 
      playerClass: { 
       required: true 
      } 
     }, 
     submitHandler: function() { 
      var accountNumber = $(".accountNumber").val(); 
      var domain = $(".domain").val(); 
      var playerClass = $(".playerClass").val(); 
      var dataString = accountNumber + playerClass; 
      //Save Form Data........ 
      $.ajax({ 
       type: "POST", 
       dataType: "json", 
       url: "/", 
       contentType: "application/json", 
       data: dataString, 
       success: function() { 
        $(".player-code").show(); 
        $('.render-info').html("<div class='alert alert-success'>You've successfully built your player code</div>"); 

       }, 
       failure: function() { 
        $('.render-info').html("<div class='alert alert-failure'>Submission Error</div>"); 
       } 
      }); 
     } 
    }); 
}); 

jQuery.validator.addMethod("domainChk", function (value, element, params) { 
    if (this.optional(element)) return true; 
    var regExp = new RegExp("^(?!www\\.|http:\/\/www\.)(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$"); 
    return regExp.test(value); 
}, "Valid hostname required for player code"); 

jQuery.validator.addClassRules({ 
    domainChk: { 
     domainChk: true 
    } 
}); 

$('input[type="text"]').on('click keyup blur', function() { 
    if ($('#form').valid()) { 
     $(".submit").show(); 
    } else { 
     $(".submit").hide(); 
    } 
}); 

//PREPOPULATE ACCOUNT FROM QUERY STRING 
var url = window.location.href; 
var regex = /=.*/; // match '=' and capture everything that follows 
var accountId = url.match(regex); 
    $(".accountNumber").val(accountId).remove("="); 
// 

jsFiddle: Link

+2

Нет опции 'failure:' для '$ .ajax()'. Возможно, вы хотели использовать 'error:'. – jfriend00

+1

В вашей скрипке есть ошибка '$ (". AccountNumber "). Val (accountId) .remove (" = ");' –

+0

@ jfriend00, woops, thanks! – Matt

ответ

1

Там нет failure: варианта для $.ajax(). Если вы хотите увидеть какие-либо ошибки, возникающие при вызове ajax, используйте error:, чтобы зафиксировать ошибку.

0

Для отправки формы вы должны использовать

<button class="btn btn-default submit" type="submit">Submit</button>

вместо <div class="btn btn-default submit">Submit</div>

submitHandler будет называться только на родной отправки формы.

Fiddle

+0

Но ОП сказал: «Достигнут« submitHandler », поэтому я смущен тем, как это устранило проблему. – jfriend00

+0

Я добавил 'console.log()' to 'submitHandler' и ничего не получил в скрипке. Так что в этой версии этого не было. –

+1

@ jfriend00, кнопка не была полностью правильно установлена, как сделал Дмитрий. Если вы можете предоставить свой ответ в качестве фактического ответа, а не комментарий, я выберу его как правильный ответ. – Matt

Смежные вопросы