序列化之前的jquery验证

时间:2009-12-18 13:53:56

标签: php jquery serialization validation

我正在尝试验证表单中的某些字段是数字而不是文本。 我从哪里开始?

如果字段是数字,则序列化,如果不是,则发送空字符串。 我想这样做的原因是因为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 个答案:

答案 0 :(得分:2)

您需要使用Validate plugin。在表单提交上指定各种规则非常容易。

答案 1 :(得分:1)

正如Vincent Ramdhanie所说,validate插件是个不错的选择。

但是,我想澄清一些事情:

  

我想这样做的原因是因为PHP将每个变量的数据视为字符串而不是数字。

就页面上的javascript / DOM而言,每个字段值的类型也将是字符串。因此,即使用户输入一个数字,它实际上只是一个字符串。因此,在任何一种情况下,您都需要将字符串解析为数字(或让库为您执行此操作)。

要记住的第二个重要事项是,您不能依赖客户端验证,因为它很容易被绕过/破坏。您应该真正在服务器端以及客户端验证数据。

<强>更新

在回复你的评论时,我对PHP并不是很熟悉,但是一个快速的谷歌搜索告诉我这应该有用:

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

正如我所提到的,我不是PHP程序员,所以可能有更好的方法来做,但这应该有用。

答案 2 :(得分:1)

您是否尝试过PHP的函数is_numeric

答案 3 :(得分:0)

我认为这将解决您的问题,PHP有一个名为intval的好函数

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