【问题标题】:Using onload with document.getElementById to fill HTML form使用 onload 和 document.getElementById 来填充 HTML 表单
【发布时间】:2021-03-04 17:43:20
【问题描述】:

我有以下 JavaScript 支付宝付款代码 -

onApprove: function(data, actions) {
    return actions.order.capture().then(function(details) {
    window.location.replace("www.mysite.com/success");
    document.getElementById("payment_no").value='1234';
  });
},

一旦付款,这将重定向用户。下一页有一个带有“payment_no”字段的表单,一旦使用脚本中的值重定向,我想填写该字段。

目前这不起作用,我认为这是因为页面在尝试发布值之前尚未加载。我已经研究过使用 onload ,但只是不明白如何在这个脚本中使用它。有人可以帮忙吗?

这是我的 form.py,以防万一 -

class UserRegisterForm(UserCreationForm):
    email = forms.EmailField(widget= forms.EmailInput(attrs={'id':'email'}))
    payment_no = forms.CharField(max_length=50, widget= forms.TextInput(attrs={'id':'payment_no'}))

    class Meta:
        model = User
        fields = ['email', 'payment_no', 'password1', 'password2']

【问题讨论】:

    标签: javascript paypal django-forms getelementbyid onload


    【解决方案1】:

    使用onload 就像使用任何其他 DOM 事件一样。这是我做的一个例子

    <script>
      const OnLoadFunction = () =>{
        document.getElementById('form-input').value = "1234";
      }
    </script>
    <body onload="OnLoadFunction();">
      <form>
        <input type="text" id="form-input"/>
      </form>
    </body>
    

    这应该会在加载文档时更改输入字段的值。从您的代码的外观来看,您似乎正在使用一个函数来完成两项工作。我会使用两个函数,以便您可以在 www.mysite.com/success 加载时调用其中一个

    1:改变页面位置

    2:操作输入字段

    【讨论】:

    • 问题是我打算将值 (payment_no) 变成贝宝付款创建的变量,因此它将在第 1 页创建,然后我希望将该变量值发布到表单第二页。通过您的解决方案仍然可以实现吗?
    • 要跨页面存储变量,您可以使用localStorage.setItem("storageName",getInput);localStorage.getItem("storageName"); 如果您将变量存储在cookie、会话存储、令牌等中,我的解决方案应该仍然有效。
    猜你喜欢
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多