单击按钮后如何在Stripe中显示微调框?

赫里曼编码器

我有一个上面带有条纹元素的网页。一切正常。但是,我想在单击“付款”按钮后显示一个微调框,但前提是所有信用卡字段均已填写并经过验证。问题在于,Stripe的客户端API /结构阻止我使用javascript检查这些字段。通过执行以下操作,我可以轻松点击按钮:

$("#btnPay").click(function() {
    // show spinner
});

但是除非填写并完成所有信用卡字段,否则我永远不想显示微调框。否则,当字段仍然为空等时,微调框将弹出。

在Stripe验证表单之后,Stripe Elements API中是否有一种方法可以注入启动旋转程序的js的js,但在此之前,它会进行ajax调用以获取令牌?

这是我页面的某些部分:

一些js:

<script>
function setOutcome(result) {
    var successElement = document.querySelector('.success');
    var errorElement = document.querySelector('.error');
    successElement.classList.remove('visible');
    errorElement.classList.remove('visible');

    if (result.token) {
        // my ajax here
    } else if (result.error) {
        errorElement.textContent = result.error.message;
        errorElement.classList.add('visible');
    }
}
</script>

HTML形式:

<form action="//httpbin.org/post" method="POST">
   <input type="hidden" name="token" />
   <div class="group">
      <label>
         <span>Credit Card</span>
         <div id="card-element" class="field"></div>
      </label>
   </div>
   <div class="group">
      <label>
      <span>Name on Card</span>
      <input id="name" name="name" class="field" placeholder="Your name here" />
      </label>
   </div>
   <button type="submit" id="btnPay" style="cursor: pointer; width: 200px; margin-left: 155px;">Pay $115.00</button>
</form>

一些更多的js:

<script>
    var stripe = Stripe('pk_test_3Z8D***********C');
    var elements = stripe.elements();

var card = elements.create('card', {
    hidePostalCode: true,
    style: {
        base: {
            iconColor: '#666EE8',
            color: '#31325F',
            lineHeight: '40px',
            fontWeight: 300,
            fontFamily: 'Helvetica Neue',
            fontSize: '15px',

            '::placeholder': {
                color: '#CFD7E0',
            },
        },
    }
});
card.mount('#card-element');

card.on('change', function (event) {
    setOutcome(event);
});

document.querySelector('form').addEventListener('submit', function (e) {
    e.preventDefault();

    var options = {
        name: document.getElementById('name').value,
    };

    stripe.createToken(card, options).then(setOutcome);
}); 
</script>

有任何想法吗?

保罗·阿杰斯

如果result.token未定义,您可以隐藏微调框。令牌存在意味着表单已提交。

像这样:

document.querySelector('form').addEventListener('submit', function (e) {
    e.preventDefault();

    var options = {
        name: document.getElementById('name').value,
    };

    // show the spinner on submit
    showSpinner();

    stripe.createToken(card, options).then(setOutcome);

});

function setOutcome(result, wasSubmitted) {
    var successElement = document.querySelector('.success');
    var errorElement = document.querySelector('.error');
    successElement.classList.remove('visible');
    errorElement.classList.remove('visible');

    if (result.token) {
        // hide the spinner if this was called after a form submit
        hideSpinner();

        // my ajax here
    } else if (result.error) {
        // also hide the spinner on error
        hideSpinner();

        errorElement.textContent = result.error.message;
        errorElement.classList.add('visible');
    }
} 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用angular js单击提交按钮后,如何在警报框中显示错误?

在Android中隐藏微调框并单击按钮显示

单击按钮后如何在pygame中显示文本

在Android中单击按钮后如何锁定微调器

如何在单击Angular2模板中的按钮时显示加载图像/微调框,直到收到服务器的响应

如何在微调对话框中添加取消按钮?

单击按钮后在文本框中显示checkBox的文本

用户在颤动中单击按钮后如何显示警报对话框

如何在按钮单击功能,角度js中显示引导确认框?

单击按钮后显示消息框

单击两个按钮后如何在Textview中显示两个不同的文本

如何在选择后仅显示一个微调框

单击该按钮时我有按钮我只想显示进度对话框 2 秒,如何在 2 秒后关闭进度对话框

单击Jquery中的弹出按钮后如何显示刻度线?

单击php中的按钮后如何显示表格

单击活动类中的按钮,如何在适配器的微调器上过滤列表

如何在Android的同一行中对齐TextView,微调框和按钮

如何在Android布局中的“微调框”按钮内删除多余的内部填充?

如何在Angular中单击后禁用按钮

如何在 React 中单击按钮后渲染 YouTube 视频?

单击后如何在React Native中禁用按钮

刷新后如何使微调框显示先前选择的项目?

如何在单击按钮后显示其他文本但该文本不在基本html中的网站中解析文本

如何在文本框中显示 JSON 条目并在单击按钮时在字符串中移动?

如何在angularjs中单击隐藏和显示按钮?

如何在php中单击按钮时显示表格?

如何在Android中单击按钮隐藏和显示密码?

如何在 css 中突出显示单击的导航按钮?

如何在单击按钮时在uimageview中显示不同的图像