如何提醒用户空白表单字段?

时间:2014-12-04 01:51:53

标签: javascript forms input

我有这个有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>

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

<input required type="text" name="name"/>

答案 2 :(得分:0)

试试这个

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;
}