html – 仅在Google Chrome中显示“无效的表单控件”

下面的代码在Safari中运行良好,但在Chrome和Firefox中,窗体不会提交。 Chrome控制台记录错误带有name =”的无效表单控件不可聚焦。有任何想法吗?

请注意,虽然下面的控件没有名称,但它们在提交时应该有名称,由下面的Javascript填充。形式DOES在Safari中工作。

<form method="POST" action="/add/bundle"> 
<p> 
    <input type="text" name="singular" placeholder="Singular Name" required> 
    <input type="text" name="plural" placeholder="Plural Name" required> 
</p> 
<h4>Asset Fields</h4> 
<div class="template-view" id="template_row" style="display:none"> 
    <input type="text" data-keyname="name" placeholder="Field Name" required> 
    <input type="text" data-keyname="hint" placeholder="Hint"> 
    <select data-keyname="fieldtype" required> 
        <option value="">Field Type...</option> 
        <option value="Email">Email</option> 
        <option value="Password">Password</option> 
        <option value="Text">Text</option> 
    </select>    
    <input type="checkbox" data-keyname="required" value="true"> Required
    <input type="checkbox" data-keyname="search" value="true"> Searchable
    <input type="checkbox" data-keyname="readonly" value="true"> ReadOnly
    <input type="checkbox" data-keyname="autocomplete" value="true"> AutoComplete
    <input type="radio" data-keyname="label" value="label" name="label"> Label
    <input type="radio" data-keyname="unique" value="unique" name="unique"> Unique
    <button class="add" type="button">+</button> 
    <button class="remove" type="button">-</button> 
</div> 

<div id="target_list"></div> 
    <p><input type="submit" name="form.submitted" value="Submit" autofocus></p> 
</form>

<script> 
function addDiv()
{
    var pCount = $('.template-view', '#target_list').length;
    var pClone = $('#template_row').clone();
    $('select, input, textarea', pClone).each(function(idx, el){
        $el = $(this);
        if ((el).type == 'radio'){
            $el.attr('value', pCount + '_' + $el.data('keyname'));
        }
        else {
            $el.attr('name', pCount + '_' + $el.data('keyname'));
        };
    });
    $('#target_list').append(pClone);
    pClone.show();
}

function removeDiv(elem){
    var pCount = $('.template-view', '#target_list').length;
    if (pCount != 1)
    {
        $(elem).closest('.template-view').remove();
    }
};

$('.add').live('click', function(){
    addDiv();
});

$('.remove').live('click', function(){
    removeDiv(this);
});

$(document).ready(addDiv);

</script>
Chrome希望将重点放在所需的但仍为空的控件上,以便它可以弹出“请填写此字段”的消息。但是,如果控件在Chrome要弹出消息的时间点(即表单提交时)被隐藏,则Chrome无法关注控件,因为它已隐藏,因此表单不会提交。

所以,为了解决这个问题,当一个控件被javascript隐藏时,我们也必须从该控件中删除’required’属性。

http://stackoverflow.com/questions/7168645/invalid-form-control-only-in-google-chrome

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:html – 仅在Google Chrome中显示“无效的表单控件”