网站:http://tinyurl.com/358lh6ajQuery验证插件:如何获得它重新验证
我要重新验证宫殿地址(他们是想域,形式为:名称)每当DomainSelect(域无论如何都会改变。
我想只是简单:
<select id=DomainSelect name=DomainSelect onChange="$('#Register').validate().element('#Name');">
它没有工作,虽然。我不确定.element是否实际重新验证了表单元素,或者只是返回true或false。
另外,应该注意的是,当Package改变时,DomainSelect被完全擦除并且输入新的值(这可能弄乱了某些东西)。如果可以提出另一种方式,比如某种隐藏方式。
编辑:
查看源的插件,我看遥控功能:
remote: function(value, element, param) {
if (this.optional(element))
return "dependency-mismatch";
var previous = this.previousValue(element);
if (!this.settings.messages[element.name])
this.settings.messages[element.name] = {};
previous.originalMessage = this.settings.messages[element.name].remote;
this.settings.messages[element.name].remote = previous.message;
param = typeof param == "string" && {url:param} || param;
if (previous.old !== value) {
这里最重要的部分是previous.old ==价值!由于我真的只验证#Name,并且在HTTP POST中沿着#DomainSelect抛出...... #Name值永远不会改变,所以函数会触发。
我可以解决这个问题的一种方法是创建一个隐藏的输入,将#Name & #DomainSelect连接在一起,然后验证该值,以这种方式更改值。除非有人提出一个更好的主意。另一种选择会做我自己的方法,但是这我写了不必要的代码为Http请求等。
编辑:我决定尝试做一个隐藏的输入,采取两个输入的值,然后验证它。该代码是凌乱:
<input name=Name id=Name size=17 onKeyUp="$('#NameDomainSelect').val( $('#Name').val() + $('#DomainSelect').val() );$('#NameDomainSelect').valid();">
<select id=DomainSelect name=DomainSelect onChange="$('#NameDomainSelect').val($('#Name').val() + $('#DomainSelect').val() );$('#NameDomainSelect').valid();">
凡名称是子域名和DomainSelect是域本身。然后NameDomainSelect是名称和DomainSelect连接。然后我必须为NameDomainSelect定义一个规则并修改我的PHP。然而,现在它显示2复选标记,因为它验证名称(对于需要)和NameDomainSelect ...叹息...
所以我决定作为一种解决方法,直到有人指示我否则修改验证的远程函数接受一个数组作为参数。 0元素是一个字符串,指向要包含的表单值,在这种情况下是DomainSelect ...,1元素是ajax请求的正常对象。
if (!param[0] == "") value = value + $("#" + param[0]).val();
...
param = typeof param[1] == "string" && {url:param[1]} || param[1];
对于远程调用,我不需要2个值来依赖,我只是简单地将0元素设置为“”。