jQuery serialize önce doğrulamak

4 Cevap php

I'm trying to verify that certain fields in my form are numeric and not text. Where would I start ?

If the fields are numeric, then serialize, if not then send an empty string. The reason I want to do this is because PHP sees the data for each variable as a string and not numeric.

Bu benim ajax istek

$.ajax({
      type: "POST",
      url: "lib/calc.php",
      data: $("#calcQuery").serialize(),
      dataType: "html",
      success: function(response)
       {
       $("#calcBox").html(response);
       $("#calcBox").show(); 
       clearForm("#calcQuery");

       },

bu benim formu

<form id="calcQuery" class="ui-widget-shadow ui-corner-all" style="margin-top: 1em;">
  <fieldset class="ui-corner-all" >
  <table border="0" width="85%">
   <tr>
    <th><nobr><label for="curr_alloc">Current Space Allocation:</label></nobr></th> 
    <td align="right"><input type="text" size="5" name="curr_alloc" id="curr_alloc" /></td>
   </tr>
   <tr>
    <td>
     <table border="0" style="margin-left: .5em;">
     <tr>
     <td>
     <input type="radio" name="curr_unit" value="KB" /><label>KB</label>
     </td>
     </tr>
     <tr>
     <td>
     <input type="radio" name="curr_unit" value="MB" /><label>MB</label>
     </td>
     </tr>
     <tr>
     <td>
     <input type="radio" name="curr_unit" value="GB" checked /><label>GB</label>
     </td>
     </tr>
     <tr>
     <td>
     <input type="radio" name="curr_unit" value="TB" /><label>TB</label>
     </td>
     </tr>
     </table>
    </td>
   </tr>

   <tr>
    <th><nobr><label for="curr_percent">Current Usage Percentage:</label></nobr></th> 

    <td align="right"><input type="text" size="5" name="curr_percent" id="curr_percent"  /></td>
   </tr>
   <tr>
    <th><nobr><label for="desired_percent">Desired Usage Percentage:</label></nobr></th> 

    <td align="right"><input type="text" size="5" name="desired_percent" id="desired_percent" /></td>

   </tr>
  </table>
  </fieldset> 

 </form>

4 Cevap

PHP'nin fonksiyonunu denedim is_numeric?

Sen Validate plugin kullanmanız gerekir. Bu form gönderildiğinde çeşitli kuralları belirlemek oldukça kolaydır.

Vincent Ramdhanie belirtildiği gibi, validate eklenti iyi bir seçenektir.

Ancak, ben açıklamak istiyorum birkaç şey vardır:

PHP bir dize ve sayısal olarak değil her bir değişken için veriler görür, çünkü ben bunu yapmak istiyorum nedenidir.

Her alan değerin türleri AYRICA kadarıyla sayfanızdaki javascript / DOM ile ilgili olarak bir dize olacaktır. Kullanıcı bir sayı girdiğinde bile bu nedenle, bu gerçekten sadece bir dize var. Yani her iki durumda da bir sayı olarak dizeyi ayrıştırmak gerekir (veya bir kütüphane sizin için yapalım) olacaktır.

Hatırlanması gereken ikinci önemli şey kolayca / kırık atlanır gibi clientside doğrulama dayanmaz olabilir. Eğer gerçekten sunucu tarafında veri doğrulama yanı sıra istemci tarafında olmalıdır.

Update

Yorumlarınız yanıt olarak, PHP ile çok aşina değilim, ama hızlı googling bu çalışması gerektiğini bana gösteriyor:

$foo = "3.123";
$bar = (float) $foo;

Ben de belirtildiği gibi, bunu yapmak için daha iyi bir yolu olabilir bu yüzden ben bir PHP programcısı değilim, ama bu çalışması gerekir.

Ben bu gidebileceğini çözeceğini düşünüyorum, PHP intval adında iyi bir işlevi var

[Link] http://php.net/manual/en/function.intval.php