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
我在我的一种表单中使用 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