Javascript jquery验证插件。未使用远程规则删除错误元素(所有操作均不使用远程规则)
检查这把小提琴: 在那里一切正常。它验证字段。检查是否为数字,检查是否为空。如果出现无效错误标签,如果有效则会消失Javascript jquery验证插件。未使用远程规则删除错误元素(所有操作均不使用远程规则),javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,检查这把小提琴: 在那里一切正常。它验证字段。检查是否为数字,检查是否为空。如果出现无效错误标签,如果有效则会消失 $("input").each(function () { $(this).rules("add", { required: true, digits: true, messages: { required: 'It is required', digits: 'Only dig
$("input").each(function () {
$(this).rules("add", {
required: true,
digits: true,
messages: {
required: 'It is required',
digits: 'Only digits can be there'
}
});
});
若我将远程规则添加到规则列表中,则会出现错误标签,但若字段变得有效,则只有类message
和error
会消失,但标签仍会显示(但必须删除)。检查这把小提琴:
使用remoute的规则阻止:
$("input").each(function () {
var fieldName = $(this).attr('name');
$(this).rules("add", {
required: true,
digits: true,
remote: {
url: "/inc/json.php?action=get_last_counter_value",
type: "post",
data: {
id: fieldName
}
},
messages: {
required: 'It is required',
digits: 'Only digits can be there',
remote: 'Fix this please.'
}
});
});
这是什么
添加:来自远程url的php脚本:
$DBH = connectToDatabase();
$user_id = $_SESSION['OplataUser_ID'];
$counter_id = $_POST['id'];
$newValue = $_POST["".$counter_id.""];
$params = array();
$params['user_id'] = $user_id;
$params['counter_id'] = $counter_id;
$STH = $DBH->prepare("
SELECT CounterValue as Value FROM CounterValues
WHERE
UserID = :user_id
AND
UserCounterID = :counter_id
ORDER BY
DateCreate
DESC
LIMIT 1
");
$STH->execute($params);
$lastValue = $STH->fetch(PDO::FETCH_OBJ)->Value;
if($lastValue > $newValue)
{ $result = "false"; }
else
{ $result = "true"; }
print $result;
$DBH = null;
所以这个脚本只返回true
或false
这是您需要的吗
我刚刚更改了.removeClass(errorClass).removeClass('message')代码>
到.removeClass(errorClass).remove()
实际上,只要.remove()
就足够了您的问题在于取消高亮事件,您只是删除类而不是删除标签
替换
$(element.form).find("label[for=" + element.id + "]").removeClass(errorClass).removeClass('message');
与
只要remote
规则从服务器接收到正确的响应,插件就会自动切换消息
如果您的PHP结果需要验证失败,请执行以下操作
echo 'false';
echo 'true';
或
如果您的PHP结果需要验证才能通过,请执行以下操作
echo 'false';
echo 'true';
:
“通过jQuery.ajax(XMLHttpRequest)调用服务器端资源并获取一个键/值对,该键/值对对应于已验证元素的名称及其作为GET参数的值。响应的计算结果为JSON,对于有效元素,响应必须为true
,对于无效元素,响应可以为任何false
、undefined
或null
,使用默认消息;或者字符串,例如。“该名称已被使用,请尝试使用peter123“显示为错误消息”
不是通过remote
方法,而是通过errorPlacement
回调中的代码,您的系统完全崩溃
删除errorPlacement
回调,或者恢复默认值,至少可以让插件重新工作:
不要用jQuery创建br
元素来放置标签
,只需使用errorElement:“div”
选项,这会将标签
更改为div
,它会自然地显示在输入
下,因为div
是一个块。这样,您可以完全避免错误放置
选项
errorElement: "div"
你的手臂有毛病。jQuery验证在我完成之前是完全中断的。更不用说你的remote
规则在jsiddle中无论如何都不起作用。另外,您需要显示/inc/json.php?action=get_last_counter_value
函数的php
代码,或者准确解释它返回的内容。我将在几分钟内编辑我的问题并进行解释。如果您想让jQuery验证插件的远程规则正常工作,您需要echo true
或echo false
对其执行操作。。。不打印
。好的,我会编辑我的php代码,谢谢。但检查小提琴,没有php代码。在我的本地机器上也有同样的情况。类消息
和错误
从错误标签元素中移除,但元素未移除。和小提琴上的一样,还能是什么?插件会自动切换错误消息。如果remote
规则得到true
响应,则应删除错误标签。没那么复杂。要制作一个简单的演示,请去掉所有选项。。。只需将.validate()
与规则一起使用,然后再次测试。如果它突然开始工作,你就会知道去哪里找。如果没有,则说明remote
无法工作。如果必须手动删除标签,则说明插件使用不当@斯帕克,哦,好的。我不知道插件,我只是编辑了fiddle如果你必须手动删除标签,你没有正确使用插件!我编辑了我的php代码,修改了print$results代码>到回显$result代码>。同样的错误。标签未删除。@SharikovVladislav,我建议您将jQuery Valdiate选项剥离为除了规则之外几乎什么都没有。我只是想简单一点。只要remote
的响应正确且收到,插件就会自动切换错误消息。同时查看控制台,查看调用remote
时得到的错误代码。您的意思是删除除规则之外的所有其他代码吗@Sharikovladislav,是的,从.validate()
中删除所有代码。只应用规则。