JavaScript-如果表单的文本字段中的默认值发生更改,则强制重定向



我有一个表单,它动态地预先填充了值,在提交时执行API调用以更新第三方数据库。我是JS的新手,但我有一个问题,如果同事将表单发送给其他人,它会调用API来更新他们的联系人记录,而不会为任何更改电子邮件字段的人创建新的联系人记录。

如果有人开始更改电子邮件字段,有没有办法强制重定向到静态表单URL?我看到的是:

document.getElementById('email').onchange=function()
{
if (this.value != this.defaultValue)
location.href='http://valueinhere'
}

我总是可以触发一条弹出消息,解释为什么需要重定向到静态表单?

您可以使用这个:

HTML

<input type="text" id="email" value="email.com" firstvalue="email.com" />

JS-

document.getElementById('email').onkeyup = function () {
    var firstvalue = this.getAttribute('firstvalue');
    if (this.value != firstvalue) {
        alert('You will be rediretioned!');
        window.location.href = 'http: //www.valueinhere.com';
    }
};

此处演示

我使用了onkeyup事件,因为onchange只在blur上触发,所以如果他们更改了邮件,但没有点击另一个输入/元素,就不会发生任何事情。

请记住,如果网页对用户不友好,则更改预期行为。也许有一个禁用的输入字段和旁边的"更改"按钮会更好。

在这种情况下,你可以使用这个:

HTML

<input type="text" id="email" value="email.com" disabled="disabled" />
<button type="button" id="mailchange">Change this</button>

JS-

document.getElementById('mailchange').onclick = function () {
    alert('You will be rediretioned!');
    window.location.href = 'http: //www.valueinhere.com';
};

演示此处

在JS中,当输入值完成更改时(即,在文本输入中-模糊时),"onchange"会触发。您可能应该尝试使用"onkeydown"one_answers"onmouseup"(用于复制和粘贴)事件来检查旧值和当前值之间的差异。

最新更新