1

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

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

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

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

4

2 回答 2

0

你可以使用这个:

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 仅在模糊时触发,因此如果他们更改邮件但不单击另一个输入/元素,则不会发生任何事情。

请记住,如果网页不是用户友好的,则更改预期的行为。禁用输入字段和旁边的“更改”按钮可能会更好。

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

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

在这里演示

于 2013-08-05T11:38:58.580 回答
0

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

于 2013-08-05T11:32:44.237 回答