【问题标题】:jQuery Slider to php script: issue handling "0" valuesjQuery Slider 到 php 脚本:处理“0”值的问题
【发布时间】:2017-03-22 13:49:36
【问题描述】:

我在其中一种表单中使用 jQuery 滑块组件,如下所示:

<form action="survey_dis.php" method="POST" target="_self" name="apForm">
<div data-role="rangeslider">
<input type="range" name="F1" id="F1" min="0" max="100" step="5" value="" onchange='document.getElementById("bar1").value =  document.getElementById("F1").value."%";'>
<input type="text" name="bar1" id="bar1" value="" size="3" disabled />
</div>
(...)
</form>

正如您所注意到的,允许的范围应表示百分比,因此允许的值必须在 0 到 100 之间。因为检查 empty($var) 将返回 TRUE,即使是“0”,我已经默认“值” " 带有一个空字符串...

现在在我的 php 脚本中,我需要检查用户是否实际选择了一个值,而不是保持默认值:

for ($i=1; $i<51; $i++){ // 51 questions
    if (isset($_POST["F$i"]) && strlen($_POST["F$i"]) && ($_POST["F$i"]<>'-1') ){
        $F_var = $_POST["F$i"];
    } else {
        print "Question # $i missing";
        $missing_fields += 1;
    }
}

然而,对于 php,它总是看起来好像已经做出了一个滑块选择,并且“else”条件从不适用......即使我将“value”默认为“0”。

【问题讨论】:

  • 如果您需要扩展变量 $i,您需要在引号之外使用它。 “F” 。 $i
  • 即使 onchange 事件没有触发,它看起来像一个滑块选择了?
  • @Chris 如果评估良好。
  • @ArthurSwails 是的,“else”条件永远不会触发......

标签: php jquery string jquery-ui-slider


【解决方案1】:

首先,您的onchange 中有语法错误。您的 %. 连接,而不是 +

document.getElementById("F1").value + "%";'

为什么值 0 会返回 true?

您检查它的字符串长度,即 1,即使是 0。其他两个条件当然也成立,因为0 != -1 和给定的参数已设置。

您可以改为发送bar 字段并检查它们,因为它们默认为空。 注意: 要做到这一点,该字段不能是disabled,因为在这种情况下它永远不会发送。例如,您可以将其设置为 readonly

提示:您的 for 循环从 $i=1 开始。所以你的最后一个问题永远不会被检查,因为你停止循环 $i&lt;51 而不是 $i&lt;=51

【讨论】:

  • 谢谢!您提到的所有语法错误都只是在演示代码中(为了消除所有混乱,不幸的是,我似乎在复制和粘贴 x-) 时遇到问题)它适用于 if (isset($_POST["bar$i" ]) && strlen($_POST["bar$i"])){ $F_var = $_POST["F$i"]; }else{ $missing_fields++; } 现在。
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
相关资源
最近更新 更多