我有一个表单,它动态地预先填充了值,在提交时执行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"(用于复制和粘贴)事件来检查旧值和当前值之间的差异。