需要在Amazon Mechanical Turk <crowd-radio-group>中进行选择

Pur*_*ont 5 mechanicalturk

我正在尝试使用AMT的新crowd-formHTML元素创建HIT。

的文档<crowd-radio-group>

此元素支持以下属性。

允许空选择

一个布尔型开关,如果存在,则不允许检查任何单选按钮。

但是,即使没有该属性,该表单也非常乐于允许用户提交而无需选择组中的任何单选按钮。

我是否可以仅使用HTML元素来进行选择,还是需要添加验证码并亲自检查?

小智 2

您可以在设计页面中包含自定义脚本,以便在用户单击“提交”时验证您的表单。

该代码可在Github上获取,由 Reddit 上更活跃的 MTurk 请求者社区指导。

代码如下:

function validateForm() {
    var valid = true;
    var radioGroups = document.querySelectorAll("crowd-radio-group");
    for (var i = 0; i < radioGroups.length; i++) {
        var validGroup = false;
        var radioButtons = radioGroups[i].children;
        for (var j = 0; j < radioButtons.length; j++) {
            validGroup = validGroup || radioButtons[j].checked;
        }
        valid = valid && validGroup;
    }
    return valid;
}

window.onload = function() {
    document.querySelector('crowd-form').onsubmit = function(e) {
        if (!validateForm()) {
            alert("Please answer all the questions in order to submit.");
            e.preventDefault();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,validateForm()在提交表单时会调用该函数,该函数会检查所有单选组是否至少有一个选中的按钮。如果表单不完整,则会向用户发出警报。任何其他必要的自定义检查都可以放置在这里。