JQuery проверить перед сериализацией - PullRequest
0 голосов
/ 18 декабря 2009

Я пытаюсь проверить, что определенные поля в моей форме являются числовыми, а не текстовыми. С чего бы мне начать?

Если поля числовые, то сериализовать, если нет, то отправить пустую строку. Причина, по которой я хочу это сделать, заключается в том, что PHP видит данные для каждой переменной в виде строки, а не числа.

это мой запрос AJAX

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

       },

это моя форма

<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 ]

2 голосов
/ 18 декабря 2009

Вам необходимо использовать плагин Validate . Определить правила подачи формы довольно просто.

1 голос
/ 18 декабря 2009

Вы пробовали функцию PHP is_numeric ?

1 голос
/ 18 декабря 2009

Как упоминал Винсент Рамдани, плагин validate является хорошим вариантом.

Однако есть несколько вещей, которые я хотел бы уточнить:

Причина, по которой я хочу это сделать, заключается в том, что PHP видит данные для каждой переменной в виде строки, а не числа.

Типы каждого значения поля также будут строковыми, если речь идет о javascript / DOM на вашей странице. Поэтому, даже если пользователь вводит число, на самом деле это просто строка. Так что в любом случае вам нужно будет разобрать строку в число (или позволить библиотеке сделать это за вас).

Во-вторых, важно помнить, что вы не можете полагаться на проверку на стороне клиента, поскольку ее легко обойти / сломать. Вы действительно должны проверять данные на стороне сервера, а также на стороне клиента.

Обновление

В ответ на ваш комментарий я не очень знаком с PHP, но быстрый поиск в Google показывает, что это должно работать:

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

Как я уже говорил, я не программист PHP, так что может быть лучший способ сделать это, но это должно сработать.

0 голосов
/ 14 декабря 2011

Я думаю, что это решит вашу проблему, в PHP есть хорошая функция с именем intval

[ссылка] http://php.net/manual/en/function.intval.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...