2013-06-30 3 views
0
$(function() { 
    $('#submit').submit(function() { 

    var isValid = document.getElementById("form-setting").checkValidity(); 

    var data = {}; 
    data.id = $("#id").val(); 
    data.title = $("#title").val(); 
    data.content = $("#content").val(); 
    data.author = $("#author").val(); 
    data.email = $("#email").val(); 

    if (isValid) { 

    $.ajax({ 
     type: 'POST', 
     data: JSON.stringify(data), 
     contentType: 'application/json', 
     url: '/admin/setting', 
     success: function (data) { 
     console.log('success'); 
     console.log(JSON.stringify(data)); 
     } 
    }); 
    } 
    }); 
}); 

Итак, у меня есть приведенный выше код, где я получу все значение поля, которое заполняет пользователь, и только отправьте объект на сервер node.js, если все заполняется и проверяется.Только отправьте форму AJAX, если переменная верна

Проблема в том, что если у меня есть isValid, то на сервер ничего не отправляется.

Фактически, в этом нет никаких действий. if заявление вообще, потому что я попробовал поставить alert там, и ничего не отображается вообще.

+0

и что является 'checkValidity()'? – adeneo

+0

Я бы не стал полагаться на 'checkValidity', поскольку он не реализован во всех браузерах. – dirtv

ответ

1

Попытка предотвратить поведение по умолчанию представить обработчик вашей формы:

$(function() { 
    $('#submit').submit(function (e) { 

     var isValid = document.getElementById("form-setting").checkValidity(); 
     alert(isValid); //<<< ALERT HERE 
     var data = {}; 
     data.id = $("#id").val(); 
     data.title = $("#title").val(); 
     data.content = $("#content").val(); 
     data.author = $("#author").val(); 
     data.email = $("#email").val(); 

     if (isValid) { 
      alert('PASS'); //<<< ALERT HERE 
      $.ajax({ 
       context: this, //use for success callback 
       type: 'POST', 
       data: JSON.stringify(data), 
       contentType: 'application/json', 
       url: '/admin/setting', 
       success: function (data) { 
        console.log('success'); 
        console.log(JSON.stringify(data)); 
        //this.submit(); //uncomment this line if you want to submit form 
       } 
      }); 
     } 
     e.preventDefault(); 
    }); 

});

+0

Возможно, мой вопрос не ясен, но если вы проверите строку # 13, он никогда не входит в блок проверки 'isValid' вообще :( – Ali

+0

@Или тестовый код в обновленном ответе, alert() следует поместить здесь –

+0

и BTW, проверьте ваша консоль для ошибки –

0
if (isValid) { 
    // send your ajax call 
    return false; // plus don't want your form being submited since you allready submited it through ajax 
} 
else{ 
    return false; // since you want to prevent the submission 
} 

Но лучшим вариантом было бы не использовать форму на всех, и добавить слушателя на простой кнопки

+0

Я использовал 'return false' для предотвращения отправки, но может быть, вам нужно называть' e.preventDefault(); 'to (я не уверен) – dirtv

+0

Возможно, мой вопрос непонятен, но если вы проверите строку # 13, он никогда не входит в блок проверки 'isValid' вообще :( – Ali

+0

и что вам нужно: alert (isValid); –

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