我正处于构建网站的最后阶段,还剩下一个关键任务:设置一些表单验证,阻止用户提交空白搜索。
我知道以下帖子,但发现如何使其工作不明确,以及如何将其用于下拉列表(jQuery Validate - require at least one field in a group to be filled)
关于我如何做到这一点的任何想法,或任何可能有用的指南指南都将受到大力赞赏?
答案 0 :(得分:9)
以下是一个适用于所有表单字段类型的函数:text
,select
,radio
,checkbox
,textarea
,{{1} }和HTML5输入类型,如file
。此函数唯一的假设是所有email
元素都有select
option
value=""
这是一个演示:
答案 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);
}