如何将这个 Javascript 函数返回放在 HiddenField c# 对象中

How to put this Javascript function return in a HiddenField c# object?

本文关键字:回放 HiddenField 对象 返回 函数 Javascript      更新时间:2023-09-26

我需要将函数validarCartao()的返回放入该 HiddenField 值中。alert(response.brand.name)工作正常,但我无法得到这个,即使我将 HiddenField 移动到函数内部。我已经尝试了很多方法,但没有任何效果。我非常感谢您能提供的任何帮助。谢谢。

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);
                    }
                });
            }
        }

您放入success回调中的 return 语句将返回函数的值success()而不是函数validarCartao()

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

此外,由于函数PagSeguroDirectPayment.getBrand()似乎是异步的,因此不可能在 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);
                    }
                });
            }
        }

谢谢大家。现在它工作正常。我没有把hiddenBandeiraTemp声明放在validarCartao(element)里.圣诞快乐!!

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) {
                    }
                });
            }
        }