如果输入行中的一个字段,则该行中的所有其他字段都是必需的

时间:2011-06-22 16:20:16

标签: php javascript jquery

这是输入日期,选择输入/输出和位置的代码。 如果用户想要输入更多字段,我还添加了一个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),那么他必须输入同一行中的所有其他字段。怎么做到这一点?  enter image description here

3 个答案:

答案 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检查可以方便地立即响应用户,但可以很容易地中和。