2014-12-23 2 views
0

함수의 반환을이 HiddenField 값에 넣어 주어야합니다. validarCartao(). alert(response.brand.name) 잘 작동하지만 나는 함수 안쪽으로 HiddenField를 이동하더라도 이것을 얻을 수 없다. 나는 많은 방법을 시도했지만 아무것도 작동하지 않습니다. 당신이 제공 할 수있는 도움에 정말 감사드립니다. 감사.이 Javascript 함수를 HiddenField C# 개체에 넣는 방법은 무엇입니까?

var hiddenBandeiraTemp = document.getElementById('<%=hiddenBandeira.ClientID%>'); 
 

 
hiddenBandeiraTemp.value = validarCartao(tbNumeroCartao.value); 
 

 
function validarCartao(element) { 
 

 
      var cardNum = element.replace(/[^\d.]/g, ''); 
 
      var card_invalid = 'Número do cartão inválido.'; 
 

 
      if (cardNum.length >= 6) { 
 
       PagSeguroDirectPayment.getBrand({ 
 
        cardBin: cardNum.substr(0, 6), 
 
        success: function (response) { 
 
         if (typeof response.brand.name != 'undefined') { 
 
          alert(response.brand.name); // OK 
 
          return response.brand.name; // <<-- 
 
         } else { 
 
          alert(card_invalid); 
 
         } 
 
        }, 
 
        error: function (response) { 
 
         alert(card_invalid); 
 
        } 
 
       }); 
 
      } 
 
     }

+1

. 성공 처리기 내의 응답을 사용하십시오. – charlietfl

+0

@charlietfl 제게 어떻게 보여줄 수 있습니까? 'hiddenBandeiraTemp.value = response.brand.name;' 나던. 감사합니다 –

답변

2

당신이 PagSeguroDirectPayment.getBrand() 보이는 기능으로, validarCartao()

success: function (response) { 
    if (typeof response.brand.name != 'undefined') { 
     alert(response.brand.name); // OK 
     return response.brand.name; // <<-- 
    } else { 
     alert(card_invalid); 
    } 
} 

또한 기능에 대한 기능 success()에 대한 값을 반환합니다 success 콜백에 있지 넣어 return 문 비동기가되도록하려면 validarCartao() 안에 값을 반환 할 수 없습니다. 제 의견으로는 더 좋은 해결책이 될 것입니다 :

var hiddenCompradorIdTemp = document.getElementById('<%=hiddenCompradorId.ClientID%>'); 

validarCartao(tbNumeroCartao.value); 

function validarCartao(element) { 

      var cardNum = element.replace(/[^\d.]/g, ''); 
      var card_invalid = 'Número do cartão inválido.'; 

      if (cardNum.length >= 6) { 
       PagSeguroDirectPayment.getBrand({ 
        cardBin: cardNum.substr(0, 6), 
        success: function (response) { 
         if (typeof response.brand.name != 'undefined') { 
          alert(response.brand.name); // OK 
          hiddenBandeiraTemp.value = response.brand.name; 
         } else { 
          alert(card_invalid); 
         } 
        }, 
        error: function (response) { 
         alert(card_invalid); 
        } 
       }); 
      } 
     } 
+0

감사하지만 'hiddenBandeiraTemp.value = response.brand.name;' 작동 안됨. 'alert (response.brand.name)'는 작동하지만 var 또는 hiddenBandeiraTemp.value에 넣을 때 아무 일도 발생하지 않습니다. 또 다른 제안이 있니? 감사합니다 –

+0

'hiddenCompradorIdTemp'와'hiddenBandeiraTemp' 두 가지 요소가 있습니까? 웹 콘솔에 오류가 있습니까? '이 – nquocnghia

+0

난 당신에게 'VAR hiddenCompradorIdTemp = ...' 의 'VAR hiddenBandeiraTemp = document.getElementById를 ('<% = hiddenBandeira.ClientID %>') 아래 한 줄을 표시하는 것을 잊었다 왜냐하면 나는 내 대답에 아무 것도 잘못 보이지 않기 때문이다. 이것을 확인하십시오 : http://jsfiddle.net/4tj0atqg/1/ –

0

고맙습니다. 이제 정상적으로 작동합니다. 나는 validarCartao(element) 안에 hiddenBandeiraTemp 선언을 넣는 것을 원하지 않았다. 메리 크리스마스!!

function validarCartao(element) { 
 

 
      var hiddenBandeiraTemp = document.getElementById('<%=hiddenBandeira.ClientID%>'); 
 

 
      var cardNum = element.replace(/[^\d.]/g, ''); 
 
      var card_invalid = 'Número do cartão inválido.'; 
 

 
      if (cardNum.length >= 6) { 
 
       PagSeguroDirectPayment.getBrand({ 
 
        cardBin: cardNum.substr(0, 6), 
 
        success: function (response) { 
 
         if (typeof response.brand.name != 'undefined') { 
 
          hiddenBandeiraTemp.value = response.brand.name.toString(); 
 
         } else { 
 
          alert(card_invalid); 
 
         } 
 
        }, 
 
        error: function (response) { 
 
         alert(card_invalid); 
 
        }, 
 
        complete: function (response) { 
 
        } 
 
       }); 
 
      } 
 
     }
당신이 약속을 반환하지 않는 당신이 asychronous 함수에서 반환 할 수

+0

왜 @nquocnghia가 도움을 청하러 간 후에이 답변을 게시 했습니까? – charlietfl

+0

죄송합니다. 올바르지 않은 함수는 validarCartao() 함수 외부의'var hiddenBandeiraTemp = ...' –

관련 문제