2010-05-28 22 views
0

我创建此表单(.net),我有一个选择与回发,这将触发一个动作,取决于我选择哪个选项。我试图使用jQuery验证插件(plugin website)来验证我的表单。jQuery验证插件覆盖我的选择onChange回发

我的问题是,当我验证表单,并且我的选择被标记为无效时,验证插件覆盖它的onChange方法,使其无效,当我更改值时,事情是它正在从onchange中删除我的__dopostback ,使形式'无用'。

有没有办法让插件验证我的选择而不删除我的onchange回发动作?

+0

它不会删除它...它会阻止你的'

'从提交,因为它是无效的,这是它的工作:)你需要从验证中排除该控件或添加一个例外...或者当你想要手动验证到,例如你有一个单一的提交按钮?只有当它被点击时,你才可以验证*,而不是在表单的'submit'事件上,如果有效的话。 – 2010-05-28 12:23:14

+0

尼克,我的提交按钮正在调用一个JS函数,其中我有所有的表单验证,它只会在我想要的时候提交表单(返回true)。我尝试从验证中排除选择字段,但在验证后仍未执行回发。 我现在有选择和一个文本框,如果文本框被jQuery验证标记为无效(空),并且我使它有效(在其中键入内容),选择仍然没有做回发时,我选择的东西。 我对这一切都很陌生,所以,如果这是显而易见的,我不明白,嘿嘿。 – 2010-05-28 13:15:14

回答

1

我知道这是一个旧帖子,但我有类似的情况,并能够像这样解决它。只是以为我会发布它,以防万一有人在这里找到方法。我使用jQuery验证插件1.9.0:

$('#aspnetForm').validate({ 
    errorLabelContainer: "#messageBox", 
    wrapper: "li" 
}); 

$("input[id$='myButton']").click(function() { 
    SetRules(); 
    if ($('#aspnetForm').valid()) { 
      // form passed validation 

    } else { 
      $('#aspnetForm').resetForm(); 
      return false; 
    } 
}); 

function SetRules(){ 
    $("select[id$='myDropDown']").rules("remove"); 
    $("select[id$='myDropDown']").rules("add", {required:true}); 
} 

我的验证器设置,以便在错误的一个指定格一起显示。当我点击按钮时,验证会触发并显示该div中的所有元素并标记无效的字段,包括select(所有选项都是红色的),并且当我更改选择时,我的自动回复会触发并且选择的颜色改回旧的价值(假设选择通过了验证)。

我很喜欢这个插件,所以我不能很好地解释它,但我的思考过程是尝试获取窗体来验证并显示错误,然后将控件重置为原始状态仍然保持错误信息可见。我期待失去突出显示的红色错误,但不知何故保留,同时也带回选择的回发。

此外,我不知道以这种方式制定规则是否有助于这项工作;由于各种原因,我不得不这样设置它们,最大的原因是需要.NET自动生成ID的选择器。

+0

这是多么令人尴尬,我使用resetForm()实际上是不正确的...因为它在那个例子中当它碰到那条线时会抛出一个javascript错误......这讽刺地产生了期望的结果!这当然解释了为什么它没有我期望的输出......但为了实现这些结果而没有错误,保持这种行为可能是诀窍。 – Nathan 2012-03-23 22:13:37

3

我有同样的问题。您无法停止插件删除回发,但您可以重新创建它。 Here您可以找到提交问题的解决方案(查看Page_Load部分)。

+0

您可以在答案中包含链接的相关详细信息吗?考虑在回答问题时你的答案对未来的访问者有多大用处。如果该文章的链接发生变化,文章被删除等,则此答案值将显着降低。 – Ren 2012-11-30 11:01:24