2013-07-14 23 views
-1

我想使用Jquery進行數量驗證。我要檢查以下AJAX數量Validation

1)該數字爲整數

2),它不信

3)他們是不是小數

4)最大數量爲99

我目前的jQuery的

$(document).ready(function() 
{ 
    $('#button').click(function() 
    { 
     var pid = $('#pid').val(); 
     var length = $('#length').val(); 
     var Qty = $('#Qty').val(); // this is the quantity 
     var Category = $('#Category').val(); 
     #Qty = preg_replace('#[^0-9]#i', '', $Qty); // filter everything but numbers 
     if ($Qty >= 100) { $Qty = 99; } 
     if ($Qty < 1) { $Qty = 1; } 
     if ($Qty == "") { $Qty = 1; } 

     $.ajax({ 
      url: 'cart.php', 
      type: 'POST', 

      data: { pid:pid, length:length, Qty:Qty, Category:Category }, 
      success: function(data) 
      { 


      } 
     }) 
    }); 
}); 
+0

@saran班納吉你能幫助我這個請 – Amy

+0

@nnnnnn我的意思是如果有人類型,如'0.6' – Amy

+0

@nnnnnn做我以前'$阿賈克斯({ URL把這個:「cart.php」, 型:'POST',' – Amy

回答

1

請注意,任何使用JavaScript(帶或不帶jQuery)的驗證都應在您的PHP代碼中重複(顯然語法不一樣),因爲您無法完全信任瀏覽器提交的內容(用戶可能使用開發工具來繞過客戶端驗證)。

話雖如此,要回答您如何執行您使用jQuery描述的驗證問題,給定一個變量Qty來保存用戶輸入,您可以使用以下代碼測試它是否爲1到99之間的整數:

if (!/^[1-9]\d?$/.test(Qty)){ 
    alert('Add meaningful error message here'); 
    return false; 
} 

我展示,^[1-9]\d?$正則表達式,允許字符串中的第一個字符是1和9之間的數字,然後任選的第二字符是任何數字(0-9)。能夠統計出所有的1到99之間的數字(其實這只是普通的JS,不是jQuery的。)

在現有代碼的情況下:

$(document).ready(function() { 
    $('#button').click(function() { 
     var pid = $('#pid').val(); 
     var length = $('#length').val(); 
     var Qty = $('#Qty').val(); // this is the quantity 
     var Category = $('#Category').val(); 

     if (!/^[1-9]\d?$/.test(Qty)){ 
      alert('Add meaningful error message here'); 
      return false; // don't continue 
     }  
     $.ajax({ 
      url: 'cart.php', 
      type: 'POST',  
      data: { 
       pid: pid, 
       length: length, 
       Qty: Qty, 
       Category: Category 
      }, 
      success: function (data) { 

      } 
     }); 
    }); 
}); 

注意的是,PHP代碼你在你的問題中顯示(你以後編輯到你的JS的中間)沒有意義,因爲它實際上更改用戶輸入的值強制它符合規則。例如,用戶鍵入「15.0」,因此你的代碼將小數點去掉「150」,然後確定它太大並使其爲「99」。因此,用戶認爲他們已經向您發送了「15.0」,而您已將其更改爲「99」。

另請注意,如果您知道99是最大允許數字,則可以將maxlength="2"添加到相關輸入元素中,以便用戶不能輸入兩個以上的字符。

+0

你認爲如果我在字段上添加另一個簡單的驗證來阻止'' – Amy

+0

如果你仍然在這裏,請問什麼是解決這個問題的最好方法基本上我有一個隱藏的div,幻燈片顯示並編碼添加的項目以及價格和數量如果數量未通過驗證,我將如何停止顯示隱藏的div – Amy

+0

我已顯示的代碼_already_在Qty字段中阻止了「。」(小數點)字符正則表達式(如上所述)允許一個或兩個數字,不允許其他字符,所以沒有點或其他punc調整和沒有信件。 – nnnnnn

0

數學做它(允許像「0」這樣的符號。1個E2" 等)

// cast to a number 
var n = Number(Qty.replace(/^\s+/, '').replace(/\s+$/, '')); 
if (!isNaN(n)) { 
    // force to nearest integer in bounds 
    n = Math.max(1, Math.min(99, Math.round(n))); 
} 
else { 
    //not a number 
} 
+0

這不起作用 – Amy

+0

嗯,在哪個瀏覽器不工作? (Casting to a Number,isNaN(),Math.max(),Math.min()和Math.round()是基本的JavaScript。當然,你必須在else子句中添加一些代碼來進行錯誤處理或設置一個默認值,如「n = 1;」)。 – masswerk

1

試試這個,讓我知道是否管用:你

首先需要檢查輸入是否是數字或不

if(isNaN(Qty)) 
{ 
    alert("Not a Number"); 
    return false; 
} 

下一個永遠如果它的浮點數(表示十進制),則可以通過執行以下操作將其簡單地更改爲整數:

Qty = parseInt(Qty); //so 1.5 becomes 1 

接下來你只需做一個檢查數量是否> = 1和< = 99

if(Qty < 1 || Qty > 99) 
{ 
    alert("The number must be between 1 and 99"); 
    return false; 
} 

我希望這滿足你所有的條件艾米之間。

+0

這太好了,但nnnnnn幾乎涵蓋了一切 – Amy