所以我正在帮助别人解决关于如何使用jquery的validate插件validate textarea的另一个问题。我能想到的最好的解决方案是使用remote
方法通过ajax传递字符串,并让服务器端脚本返回字数。
这很好用,但我遇到了两个问题让我陷入了循环。一个问题,但有两个方面:
为了通过远程响应认为元素被验证,返回的数据(在json或xml中)必须基本上采用以下形式:
{"element-name" : true}
例如,如果我想以answer1
形式验证名为id=test
的元素,它可能看起来像:
$("#test").validate({
rules: {
answer1: {
remote: {
url: "check_wordcount.php",
type: "post",
data: {
wordcount: 5
}
}
}
}
}
但是有可能不是想要字数,我想确认它不使用亵渎,没有拼写错误,使用提示中随机给出的3个关键字等。也许有4个文本区域,每个都有自己的一组关键字,但仍然基本上需要相同的验证。要让validate
认为remote
测试已通过,响应数据必须包含(在上面的示例中):
{"answer1" : true}
换句话说,它不能仅仅传递一些有用的数据用于进一步的浏览器端逻辑,它必须特定于该元素,并且必须知道它需要满足的参数是什么。
对于第二部分(并且仅在此场景中),这并不算太糟糕,因为您可以将其他参数传递给除元素值之外的服务器脚本(在本例中为最小字数)。
但这确实限制了服务器端脚本的可重用性。如果我有多个表单,或者甚至只有一个表单有几个需要相同验证的文本区域,该怎么办?我觉得选择要么
一个。事先注册可以传入的所有潜在表格值,
湾假设第一个值是元素名称/值对
℃。或者,在传回之前像数组一样疯狂地清理数组键,而不完全知道它是否甚至是元素名称。
我唯一的另一个想法是我可以传入另一个名为“element-name”的参数,看看它是否在POST数组中。这仍然让我处于消毒的地方(当然,这不是一件坏事,但我不确定多少太多了)。
是否有更简单的方法来传递服务器端脚本盲信息并期望安全,一致的结果?