这是输入日期,选择输入/输出和位置的代码。 如果用户想要输入更多字段,我还添加了一个addRow函数。
<table>
for($i=0;$i<15;$i++){
<tr><td>
<input type='datepick' name='scheduledatepick[$i]' />
<select name='schedulein[$i]' /><option>--</option>
<input type='text' name='location[$i]' />
</td></tr>
}
</table>
现在我的问题是,如果用户输入了一行中的字段(可能是datepick或schedulein或location),那么他必须输入同一行中的所有其他字段。怎么做到这一点?
答案 0 :(得分:1)
PHP侧:
$errs = array();
for ($i = 0; $i < 15; $i++) {
$cnt = empty($_REQUEST['scheduledatepick'][$i]) + empty($_REQUEST['schedulein'][$i]) + empty($_REQUEST['location'][$i]);
if ($cnt > 0) && ($cnt != 3) {
$errs[] = "Row $i not completed";
}
}
if (count($errs) > 0) {
... at least one incomplete row
}
Javascript-side在某种程度上是相同的,有额外的代码来处理选择,复选框,文本字段,textareas等之间的差异......
答案 1 :(得分:1)
假设您希望在按钮上发生这种情况点击,您可以执行以下操作: Working Demo
<强>的jQuery 强>
$('button').click(function() {
// set up an array to store the invalid rows
var rows = new Array();
$('table tr')
// reset all rows before we validate
.removeClass("error")
// loop over each row
.each(function(i) {
// work out whether the fields are completed or not
var filledFieldCount = 0;
filledFieldCount += $("[name='scheduledatepick[" + i + "]']", this).val().length > 0 ? 1 : 0;
filledFieldCount += $("[name='schedulein[" + i + "]']", this).val() !== "--" ? 1 : 0;
filledFieldCount += $("[name='location[" + i + "]']", this).val().length > 0 ? 1 : 0;
// if the total completed fields for this row
// is greater than none and less than all
// then add the row to the invalid rows list
if (filledFieldCount > 0 && filledFieldCount < 3) {
rows.push(this);
}
});
// finally, change the background of the
// rows to mark them as invalid
if (rows.length > 0){
$(rows).addClass("error");
}
});
<强> CSS 强>
.error { background-color: red; }
答案 2 :(得分:0)
您需要解析表单。
如果某行不完整,请向用户发送错误消息
所有这一切都在Javascript。
然后你必须在PHP中实现相同的检查。 Javascript检查可以方便地立即响应用户,但可以很容易地中和。