JQuery, если значение пусто, установите его в 0 и подтвердите

0

Простой вопрос Я просто не могу решить, у меня есть следующая функция:

function finalCheck(){

        var result = true;
        jQuery("#carloan-form :input[type=text]").each(function() {

            if(!this.value){this.value = 0;}

            if(jQuery.isNumeric(this.value) && this.value>=0) {
                jQuery(this).parent().children('.cal-error').slideUp(300)
            }else{
                result = false;
                jQuery(this).parent().children('.cal-error').slideDown(300);
                jQuery('.cal-result').slideUp(300);
            }
        });
        return result;
    }

в основном проблема заключается в if(!this.value){this.value = 0;} если нет значения, мне нужно установить его на ноль, прежде чем продолжить с проверкой формы, но это только кажется вступившим в силу во второй раз Я проверяю его.

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

Вот JSFIDDLE, идентичный моей текущей проблеме, только при втором щелчке появится соответствующее значение.

Любая помощь очень ценится.

  • 0
    Является ли это ( finalCheck ) вашей функцией проверки, если это так, то просто сделайте это, прежде чем вызывать ее.
  • 0
    Мне нужно это в моей петле, хотя.
Показать ещё 8 комментариев
Теги:
validation

4 ответа

1
Лучший ответ

Проблема в том, когда вы получаете значение, хотя это не очевидно в вашем фрагменте кода, только JSFiddle. Итак, где у вас есть это:

var finalValue = $('#test').val();
var testInput = test();
if(testInput){
     $('span').text(finalValue);
}

Он должен быть таким:

var testInput = test();
if(testInput){
    var finalValue = $('#test').val();
     $('span').text(finalValue);
}

Обратите внимание на перемещение установки finalValue после вызова для test().

Рабочая скрипка - http://jsfiddle.net/bQSA3/4/

Возможно, там, где вы ошибались, думал о вызове $('#test').val() установил ссылку на значение test ввода. Вместо этого он получает копию значения. Если значение в test изменяется, вам нужно снова получить значение.

5

Вы можете установить значение по умолчанию для распечатки

var finalValue = $('#test').val() || 0;

Проверьте http://jsfiddle.net/odiseo/bQSA3/5/

0

Попробуйте положить это...

if(!this.value){this.val(0);}
  • 0
    TypeError: this.val не является функцией, и if (! This.value) {jQuery (this) .val (0);} делает то же самое.
  • 0
    Хорошо, тогда, возможно, оберните это в функцию jquery ... Попробуйте вместо этого поставить это ... if (! This.value) {jQuery (this) .val (0);}
Показать ещё 2 комментария
0

В приведенном ниже коде (упрощенном) всегда отображается значение true в предупреждении, которое, я думаю, является ожидаемым поведением.

Html

<form id="carloan-form">
  <input type="text" />
  <input type="text" />
  <input type="text" />
  <button id="check">check</button>
</form>

скрипт

$(function () {
    $("#check").click(function() {
        var result = true;
        jQuery("#carloan-form :input[type=text]").each(function() {
            if(!this.value){this.value = 0;}

            if(jQuery.isNumeric(this.value) && this.value>=0) {

            }else{
                result = false;
            }
        });

        alert(result);
    });
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню