Простой вопрос Я просто не могу решить, у меня есть следующая функция:
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, идентичный моей текущей проблеме, только при втором щелчке появится соответствующее значение.
Любая помощь очень ценится.
Проблема в том, когда вы получаете значение, хотя это не очевидно в вашем фрагменте кода, только 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
изменяется, вам нужно снова получить значение.
Вы можете установить значение по умолчанию для распечатки
var finalValue = $('#test').val() || 0;
Проверьте http://jsfiddle.net/odiseo/bQSA3/5/
Попробуйте положить это...
if(!this.value){this.val(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);
});
});
finalCheck
) вашей функцией проверки, если это так, то просто сделайте это, прежде чем вызывать ее.