【问题标题】:How to alert user for blank form fields?如何提醒用户空白表单字段?
【发布时间】:2014-12-04 01:51:52
【问题描述】:

我有一个有 3 个输入的表单,当用户将字段留空时,会弹出一个对话框以提醒用户字段为空。我下面的代码仅适用于 2 个特定输入。当我尝试向代码添加另一个输入时,它不起作用。它仅适用于 2 个输入。我怎样才能使它适用于所有三个?

<script type="text/javascript">
function val(){
    var missingFields = false;
    var strFields = "";
    var mileage=document.getElementById("mile").value;
    var location=document.getElementById("loc").value;




    if(mileage=='' || isNaN(mileage))
    {
    missingFields = true;
    strFields += "     Your Google Map's mileage\n";
    }

   if(location=='' )
    {
    missingFields = true;
    strFields += "     Your business name\n";
    }




    if( missingFields ) {
        alert( "I'm sorry, but you must provide the following field(s) before continuing:\n" + strFields );
        return false;
    }
    return true;
}
</script>

【问题讨论】:

    标签: javascript forms input


    【解决方案1】:

    显示 3 个警报可能会令人不安,请使用以下内容:

    $(document).on('submit', 'form', function () {
        var empty = $(this).find('input[type=text]').filter(function() {
            return $.trim(this.value) === "";
        });
        if(empty.length) {
            alert('Please fill in all the fields');
            return false;
        }
    });
    

    灵感来自this post

    或者您可以使用 HTML data attributes 以这种方式对每个字段进行验证:

    <form data-alert="You must provide:" action="" method="post">
        <input type="text" id="one" data-alert="Your Google Map's mileage" />
        <input type="text" id="two" data-alert="Your business name" />
        <input type="submit" value="Submit" />
    </form>
    

    ...结合jQuery:

    $('form').on('submit', function () {
        var thisForm = $(this);
        var thisAlert = thisForm.data('alert');
        var canSubmit = true;
        thisForm.find('input[type=text]').each(function(i) {
            var thisInput = $(this);
            if ( !$.trim(thisInput.val()) ) {
                thisAlert += '\n' + thisInput.data('alert');
                canSubmit = false;
            };
        });
        if( !canSubmit ) {
            alert( thisAlert );
            return false;
        }
    });
    

    看看这个脚本in action

    当然,您可以只选择/检查具有属性data-alert 的输入元素(这意味着它们是必需的)。 Example 带有混合输入元素。

    【讨论】:

    • 我正在寻找一种方法来指定哪个字段留空
    【解决方案2】:

    您可以在输入字段中添加 required 标签。不需要 jQuery。

    &lt;input required type="text" name="name"/&gt;

    【讨论】:

    • 作为提示,您还应该为required 使用polyfill。比如h5validate
    【解决方案3】:

    试试这个

    var fields = ["a", "b", "c"]; // "a" is your "mile"
    var empties= [];
    
    for(var i=0; i<fields.length; i++)
    {
        if(!$('#'+fields[i]).val().trim())
            empties.push(fields[i]);
    }
    
    if(empties.length)
    {
        alert('you must enter the following fields '+empties.join(', '));
        return false;
    }
    else
        return true;
    

    而不是这个

    var name = $('#mile').val();
    if (!name.trim()) {
        alert('you must enter in your mile');
        return false;
    } 
    

    【讨论】:

    • 我需要一种方法来指定哪些字段留空
    • 我假设该字段的 id 具有足够的描述性。
    • 我的意思是在警告框中指定哪些字段留空
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2011-05-25
    相关资源
    最近更新 更多