jQuery 滑块到 php 脚本:处理“0”值的问题

jQuery Slider to php script: issue handling "0" values

我在我的一种表单中使用 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) 将 return 即使对于“0”也是如此,我默认 "value" 为空字符串...

现在在我的 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” .

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

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

为什么值 0 return 为真?

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

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

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