聚合物元素表格未提交所有字段
Polymer Elements Form not submitting all fields
我的代码如下。
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link rel="shortcut icon" href="/favicon.ico" type="image/png" />
<title>configurator- Log in</title>
<link rel="stylesheet" type="text/css" href="/public/stylesheets/style.css">
<script nonce='d8c9ef6060da432f9a21d440196fa3e17adb185464944bb93fdd1809e02fa1' type="module">
import('@polymer/iron-form/iron-form.js');
import('@polymer/paper-input/paper-input.js');
import('@polymer/paper-button/paper-button.js');
</script>
<meta charset="UTF-8">
</head>
<body>
<header>
<a href="/" class="logo"><img src="/images/logo.gif" alt="Logo"></a>
<div>
<h1>Router</h1>
<h2>Log in</h2>
</div>
</header>
<menu>
<p><a href="/">Home</a></p>
<p>Log in</p>
</menu>
<section id="_content">
<div id="_flashes" class="flashes">
</div>
<form is="iron-form" allow-redirect method="post" id="_form" action="/login">
<input type="hidden" name="_csrf" value="iNg6gJDo-k61QJuGnqA8DjEKttgFS6qyUGgo">
<paper-input type="password" name="password" label="Password"></paper-input>
<paper-button raised onclick="submitForm()">Log In</paper-button>
</form>
<script>
function submitForm(e) {
document.getElementById("_form").submit();
}
</script>
</section>
<footer>
Configurator version . ©2018
</footer>
</body>
</html>
当我点击提交按钮时,只有名为_csrf 的字段被传输。 paper-input
字段未发送。我究竟做错了什么?我已经尝试了来自处理 Polymer 的各种网站的许多不同建议,但 none 似乎是合适的。我在浏览库时注意到有一个提交函数,它从 Shadow DOM 中找到的那些元素中收集值,并在提交表单之前将其编组到动态创建的隐藏输入字段中。在我的案例中似乎没有调用此函数,我也不知道为什么。
您使用的是原生表单,它将拾取原生元素并发送它们,您唯一的 "plain" 输入是 _csrf。
我不认为搜索 "down" 进入 shadowDom
以查看在纸张输入的定义中某处有输入。
因此您可以使用所有本机输入(这违背了使用 Web 组件的目的)或使用另一个 "knows" 如何处理此问题的 Web 组件,例如包装您的 <form>
进入 <iron-form>
并提交那个。
我的代码如下。
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link rel="shortcut icon" href="/favicon.ico" type="image/png" />
<title>configurator- Log in</title>
<link rel="stylesheet" type="text/css" href="/public/stylesheets/style.css">
<script nonce='d8c9ef6060da432f9a21d440196fa3e17adb185464944bb93fdd1809e02fa1' type="module">
import('@polymer/iron-form/iron-form.js');
import('@polymer/paper-input/paper-input.js');
import('@polymer/paper-button/paper-button.js');
</script>
<meta charset="UTF-8">
</head>
<body>
<header>
<a href="/" class="logo"><img src="/images/logo.gif" alt="Logo"></a>
<div>
<h1>Router</h1>
<h2>Log in</h2>
</div>
</header>
<menu>
<p><a href="/">Home</a></p>
<p>Log in</p>
</menu>
<section id="_content">
<div id="_flashes" class="flashes">
</div>
<form is="iron-form" allow-redirect method="post" id="_form" action="/login">
<input type="hidden" name="_csrf" value="iNg6gJDo-k61QJuGnqA8DjEKttgFS6qyUGgo">
<paper-input type="password" name="password" label="Password"></paper-input>
<paper-button raised onclick="submitForm()">Log In</paper-button>
</form>
<script>
function submitForm(e) {
document.getElementById("_form").submit();
}
</script>
</section>
<footer>
Configurator version . ©2018
</footer>
</body>
</html>
当我点击提交按钮时,只有名为_csrf 的字段被传输。 paper-input
字段未发送。我究竟做错了什么?我已经尝试了来自处理 Polymer 的各种网站的许多不同建议,但 none 似乎是合适的。我在浏览库时注意到有一个提交函数,它从 Shadow DOM 中找到的那些元素中收集值,并在提交表单之前将其编组到动态创建的隐藏输入字段中。在我的案例中似乎没有调用此函数,我也不知道为什么。
您使用的是原生表单,它将拾取原生元素并发送它们,您唯一的 "plain" 输入是 _csrf。
我不认为搜索 "down" 进入 shadowDom
以查看在纸张输入的定义中某处有输入。
因此您可以使用所有本机输入(这违背了使用 Web 组件的目的)或使用另一个 "knows" 如何处理此问题的 Web 组件,例如包装您的 <form>
进入 <iron-form>
并提交那个。