隐藏的表单字段,但如果没有设置值仍显示必需的验证

时间:2015-05-12 09:54:03

标签: javascript html css validation

我有一些表单字段,根据用户与网页的交互方式填充javascript。

<input type="hidden" class="evaluation_answer" required name="evaluation_1"/>
<div class="options">
    <div class="option">
        <i class="fa fa-star-o fa-2x"></i>
    </div>
    <div class="option">
        <i class="fa fa-star-o fa-2x"></i>
    </div>
    <div class="option">
        <i class="fa fa-star-o fa-2x"></i>
    </div>
    <div class="option">
        <i class="fa fa-star-o fa-2x"></i>
    </div>
</div>

此字段的值将填充一些javascript。

var stars = document.getElementsByClassName("fa-star-o");
for(var i = 0; i < stars.length; i++) {
    stars[i].addEventListener("click", function(){
        console.log("empty star clicked...");

        var sib = this.parentNode.parentNode;
        sib = sib.getElementsByTagName("i");
        console.log(sib);
        for(var u = 0; u < sib.length; u++) {
            sib[u].classList.remove("fa-star");
            sib[u].classList.add("fa-star-o");
            sib[u].style.color = "#444";
        }

        this.classList.remove("fa-star-o");
        this.classList.add("fa-star");

        for(var u = 0; u < sib.length; u++) {
            if(sib[u].classList.contains("fa-star")) {
                var index = u;
                break;
            }
        }

        var hidden_input = this.parentNode.parentNode.parentNode;
        hidden_input = hidden_input.getElementsByClassName("evaluation_answer");
        hidden_input[0].value = index + 1;

这为隐藏的输入字段提供了一个值,取决于它们在页面上点击的内容的索引(不重要),但是,如果他们没有点击任何内容并且仍然希望提交表单,则此字段将具有没有价值集。我已经尝试将所需的标记添加到此隐藏的输入字段,但验证弹出/警报(chrome)未显示。

有没有办法显示这些必需的验证消息?

tl; dr:在Chrome中,任何未提供值的必填字段都会提醒用户提交时需要该字段,如果将字段设置为隐藏,则不会显示此验证。任何修复?/解决方法?我知道这是按预期工作的,但我更喜欢验证消息。

0 个答案:

没有答案