- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
每当 DomainSelect(域扩展名)无论如何更改时,我都想重新验证宫殿地址(他们想要的域,形式是:名称)。
我尝试了一个简单的方法:
<select id=DomainSelect name=DomainSelect onChange="$('#Register').validate().element('#Name');">
虽然没有成功。我不确定 .element 是否真的重新验证了表单元素,或者只是返回 true 或 false。
此外,应该注意的是,当包更改时,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 !== value。因为我实际上只是在验证#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();">
Name 是子域,DomainSelect 是域本身。然后将 NameDomainSelect 与 Name 和 DomainSelect 连接起来。然后我必须为 NameDomainSelect 定义一个规则并稍微修改我的 PHP。但是,现在它显示了 2 个复选标记,因为它同时验证了 Name(对于必需的)和 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 元素设置为“”。
最佳答案
尝试:
<select id="DomainSelect" name="DomainSelect" onChange="$('#Name').valid();">
如果不起作用,我会建议您添加另一个自定义方法,如您之前所说...
关于javascript - JQuery 验证插件 : How do I get it to revalidate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3528207/
我是一名优秀的程序员,十分优秀!