JS& PHP - 如果填写了其他字段,则更改下拉值

时间:2012-01-09 17:12:15

标签: php javascript

我有一份医疗健康计划的PHP申请表,其中用户填写他的详细信息并从各种控件中选择一些选项,其中一个是计划类型(家庭计划的私人)。有时,尽管用户填写了他的兄弟/配偶细节,但他们忘记选择“家庭”选项并将其下拉保留为默认值,即“私人”计划。

如果用户填写其兄弟的详细信息,我们如何确保“计划”下拉列表会更改为正确的选项?我知道这可以通过js轻松完成,但我不确定我应该调用哪个事件,onFocusonClick将无效,因为用户可能只需单击{{1} }字段但不输入值,填写一些内容,但稍后清除它等等。

我认为一个脚本会计算4个可用兄弟字段的长度,如果其中一个不为空,则将'plan'选择值从'private'更改为'family'。

任何想法都会很棒,谢谢。

2 个答案:

答案 0 :(得分:0)

取决于你想如何处理它,服务器端?确实,检测

strlen($_POST['siblingname']) > 0

然后在处理其他内容之前自动将您的计划设置为php代码。

如果您想在客户端进行此操作。我建议使用流行的JQuery库并拦截sibblingname字段上的值更改事件。然后,在事件处理程序中,检查sibbling name字段值的长度,如果有,只需将该计划设置为family。

祝你好运

答案 1 :(得分:0)

你已经部分地给出了答案:你需要一个函数来检查字段是否为空(或其他一些随机条件)。让我们调用函数checkCondition()

接下来你需要一个调用它并在适当的时候更改字段的验证函数,你也可以将这两个函数结合起来,但如果你把它们分开,代码通常看起来更干净。例如。 ensureValidFieldPlan()

然后你可以挂钩该函数在适当的时间运行。最简单的方法是在onChange中。更好的方法是将它挂钩到相应的表单字段,但为了简单起见,可以将其挂钩到表单。

您的总代码如下所示:

function checkCondition(){
    return form.field1.value.length != 0;
}

function ensureValidFieldPlan(){
    if( form.plan.value != 'family' && checkCondition()){
        form.plan.value = 'family'
    }
}

form.onchange = function(){ form.onChange(); ensureValidFieldPlan(); };

请注意,这并不能保证浏览器客户端会传输有效的表单(例如,它可能是欺骗性的),您应该始终执行服务器端验证。