2013-05-28 7 views
0

У меня есть очень простые знания о JS/jQuery. Мне нужно выполнить проверку значения определенных текстовых полей. Пример просто воссоздает проблему, которую я использую с реальным приложением, которое намного больше, и таблицы динамически создаются на основе данных из базы данных, поэтому во время выполнения я добавляю классы, на которых я основываю свою логику jQuery.jQuery custom validation in asp.net mvc 3 razor view

Вот jsfiddle пример - http://jsfiddle.net/Xhnbm/

Есть три различных проверок, что нужно сделать - для поплавка, для длины строки и для поплавка, однако вы можете увидеть, что валидация не выполняется, я всегда получаю целое исключение, и даже если вы удалите целочисленную проверку, валидация тоже не работает, поэтому я думаю, что проблема заключается не в самих функциях, а в другом месте.

Спасибо за помощь.

P.S

Казалось, я не могу представить этот вопрос без добавления кода. Весь код находится в jsfiddle примере, но так как мне нужно, чтобы добавить некоторые здесь тоже, я думаю, что проблема либо в том, как я объявляю МАЕ функции, которые выполняют проверку или здесь:

$('#submitDocument').click(function() { 
      try { 
       if ($(".checkString16").val().length > 16) { 
        throw "The text can be up to 16 symbols"; 
       } else if (!mathFunctions.isInt($(".checkULong").val())) { 
        throw "Insert integer"; 
       } else if (!mathFunctions.isFloat($(".checkFloat").val())) { 
        throw "Insert float"; 
       } 
       validationResult = true; 
      } catch (exc) { 
       alert(exc) 
       validationResult = false; 
      } 
      return validationResult; 
     }); 

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

+0

Вы должны попробовать $ (". CheckString16 input [type = 'text']"). Each (function() {if ($ (this) .val(). Length> 16) {/ * ваш код Вот*/ } }); и т. Д. Обратите внимание, что вы не проверяете .val() для ввода, но для диапазона, что приводит к ошибке. –

+0

Хорошо, большинство вещей, которые вы говорите, я думаю. У меня также есть некоторые сомнения относительно промежутков и того, как они мешают процессу кода, но можете ли вы предоставить любую реализацию рекомендаций, которые вы даете, даже просто что-то основное, что я мог бы разработать для того, что мне нужно. – Leron

+0

Посмотрите на мой ответ –

ответ

1
$('#submitDocument').click(function() { 
     var validationResult = true; 
      if ($(".checkString16 input[type='text']:first").val().length > 16) { 
       validationResult=false; 
      } else if (!mathFunctions.isInt($(".checkULong input[type='text']:first").val())) { 
       validationResult=false; 
      } else if (!mathFunctions.isFloat($(".checkFloat input[type='text']:first").val())) { 
       validationResult=false; 
      } 
     return validationResult; 
    }); 

Это должно сделать трюк. Если #submitDocument тип ввода = «Отправить» и использовать его для отправки формы, вы должны попробовать этот способ:

$('#submitDocument').click(function (e) { 
      if ($(".checkString16 input[type='text']:first").val().length > 16) { 
       e.preventDefault(); 
      } else if (!mathFunctions.isInt($(".checkULong input[type='text']:first").val())) { 
       e.preventDefault(); 
      } else if (!mathFunctions.isFloat($(".checkFloat input[type='text']:first").val())) { 
       e.preventDefault(); 
      } 
    }); 

e.preventDefault() будет препятствовать кнопку отправки делать это по умолчанию обработчик, который представляет форму.

Вы всегда можете отправить форму вручную из кода, используя $ ("# formId"). Submit();

PS. Убедитесь, что вы также проверяете эти значения в коде позади, потому что простая проверка jquery легко найти.

+0

Да, это похоже на то, как вы догадались, но я думаю, что это видно на примере скрипки. Однако кажется, что логика, которая проверяет целое число и float, ломается сама. Я не совсем уверен, но похоже. Я собираюсь принять ваш ответ и посмотреть, что еще не так. Благодарю. – Leron

+0

Вы можете попробовать:! MathFunctions.isInt (parseInt ($ (". CheckULong input [type = 'text']: first"). Val())) and! MathFunctions.isFloat (parseFloat ($ (". CheckFloat input [Type = 'текст']:. первая ") Val())). Я думаю, что функция val() возвращает текст, и вам нужно сначала ее разобрать. Для получения дополнительной информации о самом синтаксическом анализе float/int перейдите по адресу http://stackoverflow.com/questions/1272696/checking-if-number-entered-is-a-digit-in-jquery –

+0

Да, задняя часть много более ясны для меня. Ваш код работает нормально, на самом деле логика в функциях проверки не работала.Я увижу вам другие предложения и посмотрю, как сильно я пойду с этим. Большое спасибо за поддержку. – Leron

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