2012-04-09 3 views
0

두 필드 (입력 1과 입력 2)를 모두 완료하고 그 중 하나를 변경하려고하면 jQuery가 NaN을 반환합니다. 누군가 나를 도울 수 있습니까?jQuery가 NaN을 반환합니다.

나는에서는 parseInt,에서는 parseFloat를 사용하려고했지만 여전히 내 영어 죄송합니다

작동하지 않습니다]

JS :

$(document).ready(function(){ 
    $('input[name^="input"]').keypress(function(event) { 
     if(event.which && (event.which < 48 || event.which > 57)) { 
      event.preventDefault(); 
     } 
    }); 


    var $tabs = $('input[name^="tab"]'); 
    $.each($tabs, function(i, a) { $(a).val(''); }); 

    $('input[name^="input"]').keyup(function() { 
     var count = parseInt($(this).val()); 

     if($(this).attr('name') == 'input1') { 
      var newValue = count * parseFloat($('input[name="tab1_hidden"]').val()); 
      $('input[name="tab1"]').val(newValue); 
     } 

     if($(this).attr('name') == 'input2') { 
      $.each($tabs, function(i, a) { 
       if(i > 0) { 
        var inputHidden = $(a).attr('name') + '_hidden'; 
        var newValue = count * parseFloat($('input[name="' + inputHidden + '"]').val()); 
        $(a).val(newValue); 
       } 
      }); 
     } 

    }); 
}); 

HTML :

<form action="" method="post"><div> 
<p>input 1: <input type="text" name="input1" value=""></p> 
<p> <input type="hidden" name="input1_hidden" value=""></p> 
<p>input 2: <input type="text" name="input2" value=""></p> 
<p> <input type="hidden" name="input2_hidden" value=""></p> 
<p>&nbsp;</p> 
<p>tab 1: <input type="text" name="tab1" value=""></p> 
<p><input type="hidden" name="tab1_hidden" value="10"></p> 

<p>tab 2: <input type="text" name="tab2" value=""></p> 
<p> <input type="hidden" name="tab2_hidden" value="20"></p> 

<p>tab 3: <input type="text" name="tab3" value=""></p> 
<p> <input type="hidden" name="tab3_hidden" value="30"></p> 

<p>tab 4: <input type="text" name="tab4" value=""></p> 
<p> <input type="hidden" name="tab4_hidden" value="40"></p> 

<p>tab 5: <input type="text" name="tab5" value=""></p> 
<p> <input type="hidden" name="tab5_hidden" value="50"></p> 

<p>tab 6: <input type="text" name="tab6" value=""></p> 
<p> <input type="hidden" name="tab6_hidden" value="60"></p> 

<p>tab 7: <input type="text" name="tab7" value=""></p> 
<p> <input type="hidden" name="tab7_hidden" value="70"></p> 

<p>tab 8: <input type="text" name="tab8" value=""></p> 
<p> <input type="hidden" name="tab8_hidden" value="80"></p> 
</div> 
</form> 
+2

는 구문 분석하려고하는 가치는 무엇인가? (즉, 입력 필드에 무엇이 있습니까?) – Matt

+0

디버거를 사용하여 코드를 단계별로 실행하십시오. http://meta.stackexchange.com/a/128553/133242 –

+0

또는 적어도'console.log()'에 곱하려고하는 값을 넣으십시오. 그래서 실제로 그들이 생각하는 바를 결정할 수 있습니다. – Crontab

답변

0

업데이트 :

JS를 :

count = 0 

$("input=[name='input1'], input=[name='input2']").change(function(){ 
    if ($(this).attr("name") == "input1") { 
     count = $("input=[name='tab1_hidden']").val(); 
     value1 = count * parseInt($(this).val()) 
     $("input[name='tab1']").val(value1);    
    } 

    if ($(this).attr("name") == "input2") { 
     value2 = $(this).val(); 
     countArray = []; 

     i = 0 

     $(".hidden").each(function() {    
      countArray[i] = $(this).val();    
      i++; 
     }); 

     $("input=[name='tab2']").val(value2 * countArray[0]); 
     $("input=[name='tab3']").val(value2 * countArray[1]); 
     $("input=[name='tab4']").val(value2 * countArray[2]); 
     $("input=[name='tab5']").val(value2 * countArray[3]); 
     $("input=[name='tab6']").val(value2 * countArray[4]); 
     $("input=[name='tab7']").val(value2 * countArray[5]); 
     $("input=[name='tab8']").val(value2 * countArray[6]); 

     } 
    });   
}); 

HTML :

<form action="" method="post"><div> 
<p>input 1: <input type="text" name="input1" value=""></p> 
<p> <input type="hidden" name="input1_hidden" value=""></p> 
<p>input 2: <input type="text" name="input2" value=""></p> 
<p> <input type="hidden" name="input2_hidden" value=""></p> 
<p>&nbsp;</p> 
<p>tab 1: <input type="text" name="tab1" value=""></p> 
<p><input type="hidden" name="tab1_hidden" value="10"></p> 

<p>tab 2: <input type="text" name="tab2" value=""></p> 
<p> <input type="hidden" class="hidden" name="tab2_hidden" value="20"></p> 

<p>tab 3: <input type="text" name="tab3" value=""></p> 
<p> <input type="hidden" class="hidden" name="tab3_hidden" value="30"></p> 

<p>tab 4: <input type="text" name="tab4" value=""></p> 
<p> <input type="hidden" class="hidden" name="tab4_hidden" value="40"></p> 

<p>tab 5: <input type="text" name="tab5" value=""></p> 
<p> <input type="hidden" class="hidden" name="tab5_hidden" value="50"></p> 

<p>tab 6: <input type="text" name="tab6" value=""></p> 
<p> <input type="hidden" class="hidden" name="tab6_hidden" value="60"></p> 

<p>tab 7: <input type="text" name="tab7" value=""></p> 
<p> <input type="hidden" class="hidden" name="tab7_hidden" value="70"></p> 

<p>tab 8: <input type="text" name="tab8" value=""></p> 
<p> <input type="hidden" class="hidden" name="tab8_hidden" value="80"></p> 
</div> 
</form> 

http://jsfiddle.net/F6Kht/4/

+0

작동하지만 사용자 코드는 tab2에서만 input2의 값을 곱합니다. tab1을 제외한 모든 탭을 곱해야합니다. – MrShemek

+0

'count1 + count2 * (theValue)'를 의미합니까? – undefined

+0

아니요, 아니요 : 'input1 * count1''input2 * count2'' input2 * count3'' input2 * count4' ... – MrShemek

0

$('input[name="tab1_hidden"]').val()은 빈 문자열입니다. parseFloat 인 경우 NaN입니다. NaN으로 산술 연산을 수행하면 모든 것을 감염시킵니다.

+0

좋아, 그래서 그것을'parseInt' 그것은 가치로 사용하지만, 여전히 작동하지 않는 문자열로 돌아갑니다 – MrShemek

+0

@MrValider : 죄송합니다, 나는이 주석을 이해하지 못했다. 코드가 무엇을 하려는지 설명한다면 도움이 될 것입니다. 기본적으로, NaN 결과를 확인하고 구문 분석에 실패 할 경우 기본값을 제공하려고합니다. 예를 들면 다음과 같습니다.'var a = parseFloat ($ ('# a'). val()); if (isNaN (a)) a = 0;'- 또는 기본값이 0 일 경우'var a = parseFloat ($ ('# a'). 0 '이다. – Amadan

+0

코드는 input1에 숫자를 입력하고 jquery에 tab1_hidden 값을 곱합니다. 그런 다음 결과를 tab1에 표시합니다. input2를 완성했을 때 비슷하지만 탭 (tab2, tab3 ...)에 의해 곱해야합니다. – MrShemek

관련 문제