2017-06-02 43 views
-1

如何验证使用户只能输入两个“NR”字并且还允许用户输入长度小于12的字符的文本框。我不想使用正则表达式。我可以使用标签来显示错误消息。我已经尝试过但不工作。我把这个代码在TextChanged事件:验证长度和文本框的某些字

if ((TextBoxJO.Text != "NR") || (TextBoxJO.Text.Length != 12)) 
{ 
    LabelMessageJO.visible = true; 

    LabelMessageJO.Text = "Wrong format"; 
    Button_Add.Enabled = false; 
} 
else 
{ 
    LabelMessageJO.Visible = false; 
} 
+0

目前还不清楚允许的输入应该是什么,你说他们可以输入两个单词,“NR”和“”小于12个字符“”,你的意思是他们可以输入“”NR“或OR”“ <任何不超过12个字符>“(这是你的话似乎说的)?或者你的意思是'”NR“'或'”<正好12个字符>“(这是你的代码所说的)? –

+0

是的ey可以输入NR或最多12个字符的任何内容。有可能的 ? – NFH

+0

是的,只需将'!='改为'>'即可。但是你是否意识到这一点,因为“NR”少于12个字符,它已经落入第二个条件?所以你不需要检查它是否允许任何*最多12个字符。 –

回答

0

有一个错误的代码几件事情:

  • TextBoxJO.Text != "NR"意味着该文本框应该是完全= "NR",只要你添加任何其他其后为"NR",其错误。
  • 您应该检查!TextBoxJO.Text.StartsWith("NR")
  • LabelMessageJO.visible = true;visible部分应Visible

    if ((!TextBoxJO.Text.StartsWith("NR")) || (TextBoxJO.Text.Length >= 12)) 
        { 
         Button_Add.Enabled = false; 
         LabelMessageJO.Text = "Wrong format"; 
         LabelMessageJO.Visible = true; 
        } 
        else 
        { 
         LabelMessageJO.Visible = false; 
         Button_Add.Enabled = true; 
        } 
    

上述代码应接受任何开头 “NR”,也就是长小于12个字符。

“NR123456789”将有效。

“N12345678”将无效,因为在第二位缺少“R”。

“NR1234567890”将是无效的,因为它是lenght = 12(如果你想12个字符是有效的,刚刚从TextBoxJO.Text.Length >= 12

+0

没有。这不是我想要的。我想用户可以输入完全NR,如果用户输入ER它将是无效的。也允许用户输入12个字符。不是以NR开始的字符。这12个字符可以是FU1234567R89 :)这可能吗? – NFH

+0

我根据自己对需求的理解编写了代码,可以添加说,5个有效的案例和5个无效的案例,以查看我是否可以调整代码,您是否尝试了我编写的代码?因为使用该代码,“ER”将被标记为无效。字符串只能以“NR”或“FU”开头,还是有其他有效的起始字符串? –

0

删除等号(=)您可以使用的CustomValidator做到这一点。

<asp:TextBox ID="TextBoxJO" runat="server"></asp:TextBox> 

<asp:CustomValidator ID="CustomValidator1" ControlToValidate="TextBoxJO" 
    ClientValidationFunction="isValidCustomTextBox" runat="server" 
    ErrorMessage="CustomValidator" ValidateEmptyText="true"></asp:CustomValidator> 

<script> 
    function isValidCustomTextBox(oSrc, args) { 
     var value = args.Value; 
     if ((value == "NR") || (value.length == 12 && value.substring(0, 2) != "NR")) { 
      args.IsValid = true; 
     } else { 
      args.IsValid = false; 
     } 
    } 
</script>