【问题标题】:jQuery show/hide fields doesn't pass php validationjQuery 显示/隐藏字段未通过 php 验证
【发布时间】:2013-03-08 23:02:27
【问题描述】:

我有一个基于用户选择选项显示/隐藏一些禁用字段的 jQuery 代码:

$('.fieldcontent').not('.info').hide();

$('#selector_cs').change(function() {
    $('.fieldcontent').customFadeOut(100);
    $('.' + $(this).val()).customFadeIn(900);
    $('input').prop('disabled',false);
    $('textarea').prop('disabled',false);
    $('select').prop('disabled',false);
});

});

最头疼的是:如果一个或多个字段淡入,这些字段没有通过我的 php 验证,也没有提交表单。

如果所有浏览器都禁用了 javascript,则表单可以正常工作。

PHP 验证是

if(!isset($_POST['products'])) {
$products[2] = clean_var($_POST['products']);
  }
 else {
  $error = 1;
   $products[3] = 'color:#FF0000;';
  }

适用于所有领域

是否有任何 php /jquery 解决方案(请不要使用 ajax,因为我不会再制作整个表单,而且对 ajax 一无所知)?

提前感谢您的帮助

编辑:刚刚检测到另一个错误:如果 jquery 脚本淡入表单的另一部分,PHP 不再验证它。为什么? php-jquery 从来没有遇到过这样的问题。

【问题讨论】:

  • 您可以让这些字段保持启用状态并隐藏它们吗?
  • 这是不可能的,因为如果字段被 jQuery 启用和隐藏,php 验证将不会通过。如果这些字段被禁用,则 php 验证将看不到它们。这就是为什么如果用户不选择它们,我会禁用这些字段的原因。
  • 改为type='hidden'?当你想向他们展示时,让他们type='text'(或其他东西)。不过让它们保持启用状态。
  • @Someone33 不确定我明白你在问什么。你是说它不会通过 PHP 验证,因为提交表单时项目正在淡入/淡出?
  • @kyle php 验证不会通过,因为如果字段淡入,php 将不再看到它们(使用if(!isset($_POST['message']))) ecc。我知道,听起来很奇怪。否则,使用@987654326 @验证不会通过。请参阅 google isset vs empty。

标签: php jquery validation hide show


【解决方案1】:

如果您启用它们,但将属性 type 更改为 hidden,那么 PHP 应该会在您提交它们时看到这些字段。

更新
下面的场景怎么样:

  • 显示 5 个字段
  • 开始隐藏两个字段 (A+B)
  • '添加'两个与A+B同名的type=hidden字段,并将它们的当前值从A+B复制到`A+`B
  • PHP 应该会看到这两个隐藏字段,而不是当前正在淡出的字段。
  • 如果用户在淡出时没有提交,那么当字段淡出时删除`A+`B字段并将两个淡出字段的属性设置为hidden
  • 反过来再显示字段。

请注意,这不是由 PHP 引起的问题,而是由浏览器如何/何时将表单字段解释为提交表单时要发送的有效表单字段引起的

【讨论】:

  • 如果我让它们保持启用状态,但 jQuery 脚本不显示字段,PHP 验证不会通过。看不看田野不是问题。问题是验证不会通过。如果字段淡入,php 无法识别 fadeIn 字段,因为对于 PHP,新的 fadeIn 字段不存在。
  • 已经试过了,但是没有用。但也许我不明白你的意思HERE 你可以看到我的代码并下载文件。 1000 感谢您的帮助,非常感谢。
  • 只要检测到如果我要使用隐藏字段,PHP 就会发送这些隐藏字段,这对于看到诸如“some1”、“some2”ecc 之类的值不太好。在邮件中。
猜你喜欢
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
  • 2017-02-06
  • 2013-05-30
相关资源
最近更新 更多