如何检查表单至少填写一个字段

时间:2012-08-22 16:16:05

标签: javascript jquery forms

我正处于构建网站的最后阶段,还剩下一个关键任务:设置一些表单验证,阻止用户提交空白搜索。

我知道以下帖子,但发现如何使其工作不明确,以及如何将其用于下拉列表(jQuery Validate - require at least one field in a group to be filled

关于我如何做到这一点的任何想法,或任何可能有用的指南指南都将受到大力赞赏?

4 个答案:

答案 0 :(得分:9)

以下是一个适用于所有表单字段类型的函数:textselectradiocheckboxtextarea,{{1} }和HTML5输入类型,如file。此函数唯一的假设是所有email元素都有select option

value=""

这是一个演示:

--- jsFiddle DEMO ---

答案 1 :(得分:1)

我不是专家,但这适合我。我有一个选择字段和一个捐款输入字段。如果金额不在选择选项上,则用户可以在输入字段中添加金额。所以至少要提交一个。

    function validateForm() {  
if (  myform.mySelectfield.value == "" 
    && myform.myInputfield2.value == "" 
    ) {
alert( "Please enter at least field" );
     return false;    
     }   
     } 
//--> 

当然输入字段必须是数字,所以我添加了:

 function validateForm2() {

var x = document.forms [“myform”] [“myInputfield2”]。value;

if (/[^0-9]+$/.test(x))
    {
    alert("Please enter a numerical amount without a decimal point");
    myform.myInputfield2.focus();
    return false;
  } 

}

数字检查称为onkeyup:

onkeyup="validateForm2()"

我必须创建第二个函数validateForm2(),因为数字检查不适用于第一个函数。

答案 2 :(得分:0)

//select all text inputs in form and filter them based on...
var isFilled = $('input[type="text"]', 'form').filter(function() {
    return $.trim(this.value).length;  //text inputs have a value
}).length;                             //get the selector length

//if selector contains at least one filled in text input, submit form
if (isFilled) {..submit form..} 

答案 3 :(得分:0)

var filled = $('.property-list input[type="text"]').filter(function() {
    var v = $(this).val();
    // sanitize it first
    v = v.replace(/[\s]{2,}/g,' ').replace(/^\s*(.*?)\s*$/,'$1');
    $(this).val(v);
    // if you want it to contain min.
    // 3 consecutive alphanumeric chars, for example...
    return /[a-z0-9]{3,}/i.test(v);
}).get();
if (filled.length) {
    // do whatever with the result
    alert('all okay');
} else {
    $('.property-list input[type="text"]').focus().blur();
    // this is for the placeholders to refresh, at least in Safari...
    $('.property-list input[type="text"][value!=""]:first').focus();
    var msg = 'plase fill at least one field with min. 3 ';
    msg += 'consecutive alphanumeric characters';
    alert(msg);
}