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

Posted

技术标签:

【中文标题】JS & PHP - 如果其他字段已填写,则更改下拉值【英文标题】:JS & PHP - Change dropdown value if other fields are filled 【发布时间】:2012-01-09 17:12:15 【问题描述】:

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

如何确保如果用户填写了他兄弟姐妹的详细信息,“计划”下拉菜单将更改为正确的选项?我知道这可以用 js 轻松完成,但我不确定我应该调用什么事件,onFocusonClick 不起作用,因为用户可能只需单击 Sibling Name 字段但不输入值,填写一些内容,但稍后将其清除等。

我认为一个脚本会计算 4 个可用同级字段的长度,如果其中一个不为空,则将“计划”选择值从“私人”更改为“家庭”。

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

【问题讨论】:

为什么在用户选择家庭计划时不显示兄弟字段? 可以这样做,但我担心这可能会导致用户无法清楚地知道家庭计划也可用。 您可以通过使用单选按钮而不是下拉菜单来更加强调选择计划类型。带有单选按钮的垂直标签可能会起作用:Mutually Exclusive Input Groups in Web Forms 【参考方案1】:

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

接下来,您将需要一个验证函数来调用它并在适当的情况下更改字段,您也可以组合这两个函数,但如果将它们分开,代码通常看起来更简洁。例如。 ensureValidFieldPlan()

然后您可以挂钩该函数以在适当的时间运行。最简单的方法是使用 onChange 表单。一个更好的方法是将它挂钩到适当的表单字段,但为了简单起见,让我们将它挂钩到表单。

您的总代码将如下所示:

函数检查条件() 返回 form.field1.value.length != 0; 函数确保有效字段计划() if( form.plan.value != 'family' && checkCondition()) form.plan.value = '家庭' form.onchange = function() form.onChange();确保有效字段计划(); ;

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

【讨论】:

【参考方案2】:

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

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

然后在处理其他东西之前自动从php代码中设置你的计划。

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

祝你好运

【讨论】:

我想要客户端验证,以便用户看到错误并了解他拥有的各种选项。最重要的是告知他家庭计划的高额费用,并确保他在提交表格之前接受不同的 TOS 协议。

以上是关于JS & PHP - 如果其他字段已填写,则更改下拉值的主要内容,如果未能解决你的问题,请参考以下文章

PHP 表单不检查其他输入

PHP表单,如果填写不正确,所有字段都会自行清除

Vue JS - 当其中使用的字段更新时,观看计算如何触发它?

如果填写了特定字段,如何在新选项卡中提交表单,否则正常提交?

在 PHP 登录脚本中使用会话和会话变量

协议缓冲区缺少必填字段,但已填写