2016-09-14 4 views
0

다음은 내가 만든 양식의 유효성 검사입니다. 2 단계 제출시 step_2_validation() 함수를 포함합니다.반환 false 값이 숫자가 아닌 경우

입력에 문자열이 포함되어 있지만 폼이 반환 false로 중단되지 않으면 함수가 올바르게 위치합니다. 성명서. 내가 여기서 무엇을 놓치고 있니? 당신은 단순히 각각의 실행을 중단 한 return false, 그것은 당신의 외부 기능 step_2_validation에서 false를 반환하지 않습니다

// Check mileage does not contain text 
var mileageInputs = $('.form__item.labelled input[type="text"]') 
var mileageArray = $.map(mileageInputs, function(value, index) { 
    return [value]; 
}); 

var stringArray = []; 

for(var i=0;i<mileageArray.length;i++){ 
    var thisValue = mileageArray[i].value; 
    var thisValue = thisValue.replace(/\,/g,''); // remove commas added during input 
    if ($.isNumeric(thisValue) == false && thisValue != '') { 
     stringArray.push(thisValue); 
    } 
} 

if (stringArray.length > 0) { 
    alert('This should stop the form... it does not'); 
    return false; 
} 
+0

위의 변경 (@ Jamiec의 코멘트 뒷부분에서)이 문제를 해결했습니다. 기능을 잘못 호출했습니다. – Nick

답변

1

문제입니다.

하나의 옵션이 좋은 팔자 'for(...) 루프를 사용하여 되돌릴 수있는 것이다 외부 기능 중 복귀는 return false 안타. 함수에서 그렇지 않으면 반환 값은 거의 확실히 for(..) 루프 후 return true을 원하는

for(var i=0;i<mileageArray.length;i++){ 
    var thisValue = mileageArray[i];; 
    thisValue = thisValue.replace(/\,/g,''); // remove commas added during input 
    if ($.isNumeric(thisValue) == false) { 
     return false; 
    } 
} 

참고 항상 falsey 될 것입니다.

+0

'for' 뒤에'return true;'가 있어야합니까? 그렇지 않은가? 그렇지 않으면 검사는 항상 '허위'입니다. – eisbehr

+0

@eisbehr - 아마 그렇게 생각 하겠지만, OP의 원래 코드에는 없었습니다. 함수의 결과가 항상 거짓 (false 또는 undefined) 일 것입니다. 노트 OP! – Jamiec

+0

피드백 녀석 주셔서 감사합니다; 나는 '경보'메시지가 올바르게 표시되는 시점까지 작동하도록했습니다! 그러나 '반환 거짓; 성명서는 단순히 양식이 진행되는 것을 멈추지 않습니다. 코드의 다른 곳에 버그가 있어야합니까? 편집 : for 루프를 사용하여 새 코드로 OP를 업데이트했습니다. – Nick

관련 문제