如果我正确理解你,你有11个字段和至少有一个必须填写。
这将需要一些自定义验证,是的。
首先,我建议有类似这样的领域:
<input type="text" name="options[]" />
名称可以是任何你想要的,但重要的是这些方括号。他们将输入定义为一个数组,所以在11个输入中你将有11个项目。如果你需要区分它们,请尝试:
<input type="text" name="options[something]" />
现在,服务器端验证。这是最重要的部分 - JS验证是次要的。
在PHP中验证这一领域,这样做:
$completedFields = array_filter($_POST['options']);
if(!$completedFields) die("You did not fill in any of the 11 inputs!");
简单!
最后,一些JS验证。想必你有某种提交处理程序,但如果没有你的形式是这样的:
<form action="..." method="post" onSubmit="return validationFunction(this);">
现在你可以JS是这样的:
function validationFunction(form) {
// if you're using name="options[]":
var options = form['options[]'];
// if you're using named options like options[something]
var options = (function() {
var elms = form.elements, l = elms.length, i, ret = [];
for(i=0; i<l; i++) {
if(elms[i].name.match(/^options\[.*\]$/)) ret.push(elms[i]);
}
return elms;
})();
// then do this:
var l = options.length, i;
for(i=0; i<l; i++) {
if(options[i].value != "") return true;
}
alert("Please fill out at least one of the options.");
return false;
}
希望这有助于!
“所以基本上当用户提交表单时(前5个填写**正确**),它需要给出某种**错误**。” - 为什么? –
@AmalMurali他说,当前5个填写正确,但其余11个填补不足时,错误需要发生。 – sjagr
严格的前5个字段,然后启动计数器的11个字段的验证,如果计数> = 1,则允许... :) – user1844933