在我的網卡文本框中,我試圖進行驗證,網卡文本值的第一個字母需要與姓氏文本值的第一個字母相同。
最后一個名字文本框
<div class="form-group row justify-content-cent mt-2" > /span>
<asp: 標簽 ID="lblLName" CssClass="col-md-2 col-form- label" runat="server" Text="last name"> </asp: 標簽>
<div class="col-md-4"/span>>
<asp: TextBox ID="txtLName" CssClass="form-control" runat="server"> </asp: TextBox>
<asp:RegularExpressionValidator ID="RevLname"
runat="server"/span>
Display="Dynamic"/span>
ForeColor="Red"/span>
ControlToValidate="txtLName"。
ValidationExpression="([A-Z][a-z] )$"
SetFocusOnError="true"。
ErrorMessage="Invalid Fname"></asp:RegularExpressionValidator>>
<asp:RequiredFieldValidator
ID="rfvLname"/span>
runat="server"/span>
Display="Dynamic"/span>
ForeColor="Red"/span>
ControlToValidate="txtLName"。
SetFocusOnError="true"。
ErrorMessage="Last Name is Mandatory"></asp:RequiredFieldValidator>/span>
</div>/span>
</div>/span>
NIC文本框
<div class="form-group row justify-content-center mt-2">
<asp: 標簽 ID="lblNic" CssClass="col-md-2 col-form- label" runat="server" Text="NIC"> </asp: 標簽>
<div class="col-md-4"/span>>
<asp: TextBox ID="txtNIC" CssClass="form-control" runat="server"> </asp: TextBox>
<asp:RequiredFieldValidator
ID="rfvNic"/span>
runat="server"/span>
Display="Dynamic"/span>
ForeColor="Red"/span>
ControlToValidate="txtNIC"
SetFocusOnError="true"。
ErrorMessage="NIC是強制性的"></asp:requiredFieldValidator>/span>
<asp:CustomValidator
ID="cvNic"。
runat="server"/span>
OnServerValidate="cvNic_ServerValidate"。
ClientValidationFunction="validateLength"。
Display="Dynamic"/span>
ForeColor="Red"/span>
ControlToValidate="txtNIC"
SetFocusOnError="true"。
ErrorMessage="Invalid NIC"></asp:CustomValidator>
<asp:RegularExpressionValidator
ID="revNic"/span>
runat="server"/span>
ValidationExpression="^[a-zA-Z0-9s]{14}$"
Display="Dynamic"/span>
ForeColor="Red"/span>
ControlToValidate="txtNIC"
SetFocusOnError="true"。
ErrorMessage="必須包含14個字符"></asp:RegularExpressionValidator>/span>
</div>/span>
</div>/span>
我做了一個自定義驗證的服務器端和客戶端:
服務器端
服務器端 客戶端 我制定了一個條件,為了使這個驗證發生,它應該驗證姓氏文本框是否為空,如果是的話,它將提取兩個文本框的第一個字母并在一個if陳述句中進行比較。
問題是,當我點擊提交時,客戶端的驗證沒有發揮作用,而服務器端的驗證則在資料發送后發揮作用。
我應該如何解決這個問題呢?
uj5u.com熱心網友回復: 我會使用一個 javascript
標籤:protected void cvNic_ServerValidate(span class="hljs-built_in">object source, ServerValidateEventArgs args)
{
if (txtLName.Text != string.Empty)
{
String lletter = txtLName.Text.ToLower() 。
string firstletter = lletter[0].ToString()。
String nic = txtNIC.Text.ToLower()。
String nfletter = nic[0].ToString()。
if (nfletter != firstletter)
{
args.IsValid = false。
}
}
function validateLength(sender, args) {
var LastName = document. getElementById['txtLName'].value。
var Nic = document. getElementById['txtNIC'].value。
if (LastName !== null || LastName !== ''/span>) {
var lletter = LastName.toLowerCase。
var firstletter = lletter.substr(1, 1) 。
var nic = Nic.toLowerCase。
var nfletter = nic.substr(1, 1) 。
if (nfletter != firstletter) {
return args.IsValid = false;
}
CustomValidator來處理這個問題,檢查txtLName是否為空,然后比較第一個字母。PS要用substr獲得第一個字母,你需要從索引0開始。
<asp: CustomValidator runat="server" ID= "CustomCompareValidator"
ClientValidationFunction="CustomCompareValidator"。
ErrorMessage="第一個字母應該匹配"></asp:CustomValidator>/span>
<script>
function CustomCompareValidator(source, args) {
var $txtNIC = $('#<%= txtNIC.ClientID %> ');
var $txtLName = $('#<%= txtLName.ClientID %> ');
//或使用$('#txtNIC') & $('#txtLName') 是你想使用的腳本。
//在一個單獨的js檔案中。
//檢查lastname是否為空。
if ($txtLName.val() !== ' ') {
//檢查第一個字母是否匹配。
if ($txtLName.val().substr(0, 1) ! ==$txtNIC.val().substr(0, 1) {
args.IsValid = false;
return;
}
}
args.IsValid = true;
</script>>
