如果我正確理解你,你有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