【问题标题】:jQuery Validation required returns false and still validates the inputjQuery Validation required 返回 false 并且仍然验证输入
【发布时间】:2010-04-20 09:15:52
【问题描述】:

我有一个默认为 nill 的选择框 但仍然需要我使用一个总是返回 false 并且验证仍然验证我的选择的函数

dob_year: {required: function(element){return false;}},

无论返回什么,都被标记为有效。

有什么线索吗?

jQuery 验证插件 1.7 jQuery 1.4.2 jQuery UI 1.8

<select name="dob_year" id="id_dob_year">
<option value="" selected="selected">---</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
<option value="2008">2008</option>

<option value="2007">2007</option>
<option value="2006">2006</option>
<option value="2005">2005</option>
<option value="2004">2004</option>
<option value="2003">2003</option>
<option value="2002">2002</option>
<option value="2001">2001</option>
<option value="2000">2000</option>
<option value="1999">1999</option>

<option value="1998">1998</option>
<option value="1997">1997</option>
<option value="1996">1996</option>
<option value="1995">1995</option>
<option value="1994">1994</option>
<option value="1993">1993</option>
<option value="1992">1992</option>
<option value="1991">1991</option>
<option value="1990">1990</option>

<option value="1989">1989</option>
<option value="1988">1988</option>
<option value="1987">1987</option>
<option value="1986">1986</option>
<option value="1985">1985</option>
<option value="1984">1984</option>
<option value="1983">1983</option>
<option value="1982">1982</option>
<option value="1981">1981</option>

<option value="1980">1980</option>
<option value="1979">1979</option>
<option value="1978">1978</option>
<option value="1977">1977</option>
<option value="1976">1976</option>
<option value="1975">1975</option>
<option value="1974">1974</option>
<option value="1973">1973</option>
<option value="1972">1972</option>

<option value="1971">1971</option>
<option value="1970">1970</option>
<option value="1969">1969</option>
<option value="1968">1968</option>
<option value="1967">1967</option>
<option value="1966">1966</option>
<option value="1965">1965</option>
<option value="1964">1964</option>
<option value="1963">1963</option>

<option value="1962">1962</option>
<option value="1961">1961</option>
<option value="1960">1960</option>
<option value="1959">1959</option>
<option value="1958">1958</option>
<option value="1957">1957</option>
<option value="1956">1956</option>
<option value="1955">1955</option>
<option value="1954">1954</option>

<option value="1953">1953</option>
<option value="1952">1952</option>
<option value="1951">1951</option>
<option value="1950">1950</option>
<option value="1949">1949</option>
<option value="1948">1948</option>
<option value="1947">1947</option>
<option value="1946">1946</option>
<option value="1945">1945</option>

<option value="1944">1944</option>
<option value="1943">1943</option>
<option value="1942">1942</option>
<option value="1941">1941</option>
<option value="1940">1940</option>
<option value="1939">1939</option>
<option value="1938">1938</option>
<option value="1937">1937</option>
<option value="1936">1936</option>

<option value="1935">1935</option>
<option value="1934">1934</option>
<option value="1933">1933</option>
<option value="1932">1932</option>
<option value="1931">1931</option>
<option value="1930">1930</option>
<option value="1929">1929</option>
<option value="1928">1928</option>
<option value="1927">1927</option>

<option value="1926">1926</option>
<option value="1925">1925</option>
<option value="1924">1924</option>
<option value="1923">1923</option>
<option value="1922">1922</option>
<option value="1921">1921</option>
<option value="1920">1920</option>
<option value="1919">1919</option>
<option value="1918">1918</option>

<option value="1917">1917</option>
<option value="1916">1916</option>
<option value="1915">1915</option>
<option value="1914">1914</option>
<option value="1913">1913</option>
<option value="1912">1912</option>
<option value="1911">1911</option>
<option value="1910">1910</option>
</select>

【问题讨论】:

  • 你能发布&lt;select&gt;的html标记吗?

标签: jquery validation


【解决方案1】:

基于 cmets 的更新:这个函数:

dob_year: { required: function(element) { return false;}}

我说“dob_year 元素是从不必需的”。函数返回的内容并不能确定元素是否通过验证,它确定是否需要return false; 表示它从来不需要......所以它实际上没有验证任何东西。如果你想要一个自定义的验证方法,你需要走不同的路线,adding a custom method 像这样:

jQuery.validator.addMethod("customMethod", function(value, element) { 
  return false; 
}, "This will never pass!");

然后这样称呼它:

dob_year: { customMethod: true; }

You can see a working demo doing exactly this here.

【讨论】:

  • 抱歉我发错了...实际上代码是 dob_year // dob_year: {required: function(element){return false;}},
  • @Esteban - 在这种情况下,您想要它做什么?依赖回调返回它是否是必需的......当前你的函数说“它是 never 必需的”,我想你想要return true; 这里如果你想要总是弹出所需的消息。
  • 我的代码比这要复杂一些,我想说明的是,无论该函数为插件返回什么,都将始终有效。我会做一个独立的测试。
  • @Esteban - 我认为你在这里追求的是自定义函数,而不是依赖于所需的依赖回调......请参阅我的更新答案以了解如何执行此操作。
  • @nick 做到了。但有一件事我不明白......如果可以在需要时使用一个函数......为什么不能按照 API 文档工作? docs.jquery.com/Plugins/Validation/Methods/… 顺便说一句,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-29
相关资源
最近更新 更多