2016-10-04 6 views
0

Кажется, что isNumeric не будет работать с этим типом кода, я мог бы что-то написать неправильно. Может ли кто-нибудь помочь мне и объяснить мне, что я делаю неправильно?

$("form.offer_post").submit(function(e) { 
    var name = $('#project_info').val().trim(), 
     price = $.trim($('#offer_price').val().trim()); 

    if (price.length<1) { 
     if(!$.isNumeric($('#offer_price').val())) { 
      alert("Offer MUST be numeric!"); 
      e.preventDefault(); 
      return false; 
     } 
     alert("Please enter the project price"); 
     e.preventDefault(); 
     return false; 
    } 

    if (name.length<1) { 
     alert("Please enter some description for your offer"); 
     e.preventDefault(); 
     return false; 
    } 


}); 

Все, кроме цифровой проверки, отлично работает.

+1

Вы только тестирование '$ .isNumeric', когда длина' price' является '0' - так это никогда не пройдет –

+0

Благодарности @RoryMcCrossan I пропустил это! –

+0

Нет проблем. Я добавил его в качестве ответа для вас –

ответ

0

Использование isnan jquery для определения не числовых значений.

Пример: - IsNaN ('TEXT') // истинный

0

Ваша логика ошибочна, как вы только тест для $.isNumeric, когда длина значения price является 0. Поэтому условие никогда не пройдет. Вместо этого, отдельные оба этих условиях, как это:

$("form.offer_post").submit(function(e) { 
    var name = $('#project_info').val().trim(), 
     price = $('#offer_price').val().trim(); 

    if (price.length < 1) { 
     e.preventDefault(); 
     alert('Please enter the project price'); 
    } 
    if (!$.isNumeric(price)) { 
     e.preventDefault(); 
     alert('Offer MUST be numeric!'); 
    } 
    if (name.length < 1) { 
     e.preventDefault(); 
     alert('Please enter some description for your offer'); 
    } 
});