我无法通过将值添加到浏览器控制台的输入来验证此反应表单

Posted

技术标签:

【中文标题】我无法通过将值添加到浏览器控制台的输入来验证此反应表单【英文标题】:I cant validate this react form from adding values to input from browser console 【发布时间】:2019-09-28 14:56:48 【问题描述】:

我尝试在浏览器控制台中使用 javascript 填写并验证此表单: https://www.dacia.fr/contact/reserver-un-essai/coordonnees.html?modelURI=https%3A%2F%2Ffr.co.rplug.renault.com%2Fproduct%2Fmodel%2F52B%2Fsandero%2Fc%2FA-ENS_0MDL2P1SERIELIM4_-TERPL

问题是当我使用

为输入设置值时
element.value = 'myvalue' 

element.setAttribute('value', 'myvalue') 

我提交了表单,这个没有经过验证。

请帮帮我,我什么都试过了。 :(

我也试过了: 我试过了,但没有用。也许我做错了什么?

 var element = document.getElementById("contactFormFirstName");
    var ev = new Event('input',  bubbles: true);
    element.value = "qsd";
    element.defaultValue = "qsd";
    element.dispatchEvent(ev);

    var element = document.getElementById("contactFormLastName");
    var ev = new Event('input',  bubbles: true);
    element.value = "qsd";
    element.defaultValue = "qsd";
    element.dispatchEvent(ev);

    var element = document.getElementById("contactFormEmail");
    var ev = new Event('input',  bubbles: true);
    element.value = "sqd@gmail.com";
    element.defaultValue = "sqd@gmail.com";
    element.dispatchEvent(ev);

    var element = document.getElementById("contactFormPhone");
    var ev = new Event('input',  bubbles: true);
    element.value = "0612326546";
    element.defaultValue = "0612326546";
    element.dispatchEvent(ev);

    document.querySelector('form input[name="identity[title]"][value="M"]').checked = 'checked';
    document.querySelector('form input[name="identity[title]"][value="M"]').click();
    document.querySelector(' form input[name="optin[email]"][value="N"]').checked = 'checked';
    document.querySelector(' form input[name="optin[email]"][value="N"]').click();

document.querySelector('form button[type="submit"]').click()

【问题讨论】:

【参考方案1】:

您必须触发事件而不是设置值 - 因此反应代码会将其作为用户输入处理。例如:


var element = document.getElementById("contactFormFirstName");
var ev = new Event('input',  bubbles: true);
element.value = "YYYY";
element.defaultValue = "YYYY";
element.dispatchEvent(ev);

【讨论】:

我试过了(我用我改变的内容修改了线程的描述)但它没有用。我做错什么了吗 ?您可以在表单的 url 上的控制台中尝试它:/ 我很绝望 :D ! 也许有一种方法可以模拟在字段中键入或其他内容?或者也许 react 等待一个特定的事件? 输入组件截图如下:jerchassigneux-frontend.fr/screenshot.jpg

以上是关于我无法通过将值添加到浏览器控制台的输入来验证此反应表单的主要内容,如果未能解决你的问题,请参考以下文章

如果选中,则反应复选框将值添加到数组

将值数组修补到反应形式

无法以角度反应形式添加验证器

跳过从控制框关闭表单的验证

IIS 具体怎样添加网站?

QQ浏览器兼容模式问题