C# 验证对条件的控制

C# 验证对条件的控制,c#,jquery,asp.net,vb.net,C#,Jquery,Asp.net,Vb.net,我正在努力让它按我需要的方式工作。我有两个RequiredFieldValidator和两个文本框(旁注:虽然我有下面的Javascript,但我不介意用另一种方式来做。我确实尝试了代码隐藏,但意识到直到我点击两次按钮,验证才生效): 然后我有一些脚本 <script type="text/javascript"> $(document).ready(function () { $('#<%=EmailTextbox.ClientID%>').

我正在努力让它按我需要的方式工作。我有两个RequiredFieldValidator和两个文本框(旁注:虽然我有下面的Javascript,但我不介意用另一种方式来做。我确实尝试了代码隐藏,但意识到直到我点击两次按钮,验证才生效):


然后我有一些脚本

<script type="text/javascript">
    $(document).ready(function () {
        $('#<%=EmailTextbox.ClientID%>').keyup(function () {
            if ($(this).val() != '') {
                ValidatorEnable(document.getElementById('<%= NameR.ClientID%>'), true);

                }
                else
                    ValidatorEnable(document.getElementById('<%= NameR.ClientID%>'), false);

            });
    });
</script>

$(文档).ready(函数(){
$('#').keyup(函数(){
if($(this.val()!=“”){
ValidatorEnable(document.getElementById(“”),true);
}
其他的
ValidatorEnable(document.getElementById(“”),false);
});
});
我想做的是:

如果EmailTextbox有电子邮件,则禁用NameTextbox验证。 如果EmailTextbox没有电子邮件,则启用NameTextbox验证并禁用EmailTextbox验证

由于我对JQuery/Javascript非常陌生,我已经尝试了几次尝试来实现上述目标,但是如果深入阅读,我可能会使用错误的JQuery文件(也就是说,由于这是一个现有的项目,我还没有向任何JQuery添加任何引用,所以很可能我的代码是正确的,但需要对JQuery添加引用,或者需要包含一个新版本)

如果可以的话


谢谢

在您的代码中,您在收到电子邮件时错误地启用了验证 值不为null禁用名称验证并启用电子邮件else viceversa

      <script type="text/javascript">
    $(document).ready(function () {
        $('#<%=EmailTextbox.ClientID%>').keyup(function () {
            if ($.trim($(this).val()).length)
                ValidatorEnable(document.getElementById('<%= NameR.ClientID%>'), false);
                ValidatorEnable(document.getElementById('<%= EmailTextbox.ClientID%>'), true);

                }
                else
               {
                    ValidatorEnable(document.getElementById('<%= NameR.ClientID%>'), true);
                    ValidatorEnable(document.getElementById('<%= EmailTextbox.ClientID%>'), false);
               }

            });
    });
</script>

$(文档).ready(函数(){
$('#').keyup(函数(){
if($.trim($(this.val()).length)
ValidatorEnable(document.getElementById(“”),false);
ValidatorEnable(document.getElementById(“”),true);
}
其他的
{
ValidatorEnable(document.getElementById(“”),true);
ValidatorEnable(document.getElementById(“”),false);
}
});
});

您可以尝试此功能,与您之前的功能类似

function doSomething()
{
  var myVal = document.getElementById('myValidatorClientID');
  ValidatorEnable(myVal, false); 
}
或者,您可以对它们使用visible=true/false,从而使它们处于非活动状态(意味着从代码隐藏中设置visible属性)…这可能会花费您一次ajax之旅,使用scripmanager和_uDoPostback访问代码隐藏,以便调用能够处理逻辑的服务器端函数…许多开发人员没有意识到,至少在webforms中,您可以从JS调用代码隐藏方法,只是要非常小心-因为每次回调都可能代价高昂

一篇关于从(“前端到代码隐藏通过JS”)通信的好文章

希望这对你有所帮助,或者让你回到正轨!!!

你可以试试

$(document).ready(function () {
        $('#<%=EmailTextBox.ClientID%>').keyup(function () {
            if ($(this).val() != null && $(this).val().length != 0) {
                $('#<%= NameRequiredFieldValidator.ClientID%>').hide();

            }
            else {
                $('#<%= NameRequiredFieldValidator.ClientID%>').show();
                $('#<%= EmailRequiredFieldValidator.ClientID%>').hide();
            }
        });
$(文档).ready(函数(){
$('#').keyup(函数(){
if($(this.val()!=null&$(this.val().length!=0){
$('#')。隐藏();
}
否则{
$('#')。show();
$('#')。隐藏();
}
});

请在回答中添加一些解释
$(document).ready(function () {
        $('#<%=EmailTextBox.ClientID%>').keyup(function () {
            if ($(this).val() != null && $(this).val().length != 0) {
                $('#<%= NameRequiredFieldValidator.ClientID%>').hide();

            }
            else {
                $('#<%= NameRequiredFieldValidator.ClientID%>').show();
                $('#<%= EmailRequiredFieldValidator.ClientID%>').hide();
            }
        });