2017-03-22 51 views
0

我使用jQuery的滑塊組件在我的形式之一如下:jQuery的滑塊PHP腳本:問題處理值「0」

<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之間由於空($ VAR)的檢查將甚至「0」返回TRUE,我已經默認「值」爲空字符串...

現在在我的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作爲如果滑塊已經做出選擇和「其他」條件永遠不會應用......即使我默認「值」與「0」。所有的

+0

如果你需要擴展變量$ i,你需要它在引號之外。 「F」 。 $ i – Chris

+0

即使onchange事件沒有觸發它看起來像是已經做出了滑塊選擇? –

+0

@Chris如果評估正常。 – richey

回答

0

首先,你必須在你的onchange語法錯誤。你%是連接在一起一.代替+

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

爲什麼值爲0,則返回true?

您檢查它的字符串長度,即1,即使對於0。其他兩個條件當然也是如此,因爲0 != -1和給定的參數已設置。

您可以發送bar領域代替,並檢查他們,因爲他們是在默認情況下是空的。 注意:要做到這一點,該字段不能爲disabled,因爲在這種情況下它永遠不會發送。例如,您可以將其設置爲readonly

提示:您從$i=1開始您的for循環。所以你的最後一個問題將永遠不會被檢查,因爲你停止循環$i<51而不是$i<=51

+0

謝謝!所有那些你提到的語法錯誤只是在演示代碼(去除所有的混亂,不幸的是,我似乎有一個問題複製和粘貼x-))它工作正常與 if(isset($ _ POST [「bar $ i 「])&& strlen($ _ POST [」bar $ i「])){\t \t $ F_var = $ _POST [」F $ i「]; } else {$ missing_fields ++; } 現在。 – richey