我正在尝试验证表单中的某些字段是数字而不是文本。 我从哪里开始?
如果字段是数字,则序列化,如果不是,则发送空字符串。 我想这样做的原因是因为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>
答案 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的好函数