假设我们有4个表单,每个表单有4个比率按钮,值为1-4。
我想在每个表单和Promise.all(pforms)中附加一个Promise,以便能够从点击中添加所选的值。我想在所有表单都有一些点击事件后返回所有承诺。
基本dom(将此数字乘以4并从group1更新名称 - group4)
<form>
<input type="radio" name="group4" value="1">
<input type="radio" name="group4" value="2">
<input type="radio" name="group4" value="3">
<input type="radio" name="group4" value="4">
</form>
脚本
<script>
var pForms = $('form').map(function () {
var _this = this;
var click = new Promise(function (resolve, reject) {
$(_this).one('click', function () {
resolve($(_this).find('input[type="radio"]:checked').val());
});
});
return click;
}).toArray();
Promise.all(pForms)
.then(function (results) {
console.log(results);
});
</script>
目前,当只发生一次点击事件时,它会重新承诺所有承诺。
编辑 - 现在工作正常
答案 0 :(得分:0)
找出一个有效的解决方案。
<script>
function getValue () {
return $(this).find('input[type="radio"]:checked').val();
}
var pForms = $('form').map(function () {
var _this = this;
return new Promise(function (resolve, reject) {
$(_this).one('click', function () {
resolve(getValue.call(_this));
});
});
}).toArray();
Promise.all(pForms)
.then(function (results) {
console.log(results);
});
</script>
答案 1 :(得分:-1)
保持简单。这不是你使用它的html元素,也没有写一个变量来定义这个