2015-06-15 2 views
0

Я проверки достоверности TextBox с CustomValidator и JavaScript, передавая ему некоторые: СчетчикиCustomValidator с параметрами

<asp:CustomValidator ID="CustomValidator1" runat="server" SetFocusOnError="true" Display="Dynamic" ValidateEmptyText="true" ControlToValidate="tbFirstName" ClientValidationFunction="CVH.createFunction(notEmpty, 'tbFirstName','tbFirstNameRequired')"></asp:CustomValidator>

Это мой JavaScript

var CVH = { 
    createFunction: function (validationFunction, extParamOne, extParamTwo) { 
     var originalFunction = validationFunction; 
     var extOne = extParamOne; 
     var extTwo = extParamTwo; 

     return function (src, args) { 
      return originalFunction(src, args, extOne, extTwo); 
     } 
    } 
} 
var CustomValidatorHelper = CVH; 

function notEmpty(source, args, tbID, spID) 
{ 
    var textBoxId = document.getElementById(tbID); 
    var spanID = document.getElementById(spID); 

    if (textBoxId.Value == null || textBoxId.Value == "") { 
     textBoxId.IsValid = false; 
     textBoxId.className = "form-control redBorder" 
     spanID.className = "redText"; 
     alert(textBoxId.getAttribute('value')); 
    } 
    else { 
     textBoxId.IsValid = true; 
     textBoxId.className = "form-control" 
     spanID.className = ""; 
     alert(textBoxId.getAttribute('value')); 
    } 
} 

Так notEmpty вызывается правильно и он принимает значения для tbID и spID.

Проблема в том, что когда я ввожу данные в TextBox и код выполняется, я все равно получаю не значение. Как и в textBoxId.Value равно NULL, даже с данными в поле.

TextBox ID is correct

Not valid?

Texbox установлен в Static:

<asp:TextBox ID="tbFirstName" runat="server" class="form-control" autocomplete="name" MaxLength="20" ClientIDMode="Static" />

И это правильно делает: <input name="ctl00$MainContent$tbFirstName" type="text" maxlength="20" id="tbFirstName" class="form-control" autocomplete="name" />

Любые предложения о том, почему он не может читать данные в TextBox?

+0

Добавьте атрибут «имя» в тег ввода с именем, которое вы хотите использовать в своей полезной нагрузке. – theWanderer4865

+0

@ theWanderer4865 Вы имеете в виду добавить name = "whatever", а затем использовать getElementByName или что-то еще? – Diomedes

+0

По существу, вы передаете правильное значение как 'tbID', но' getElementById'-call возвращает null? Какова ценность 'textBoxId'? это уникальный идентификатор на странице? –

ответ

0

Так что ошибка была в попытке проверить значение текстового поля непосредственно в отличие от использующих аргументах:

function notEmpty(source, args, tbID, spID) 
{ 
    var textBoxId = document.getElementById(tbID); 
    var spanID = document.getElementById(spID); 

    if (args.Value == "") 
    { 
     args.IsValid = false; 
     textBoxId.IsValid = false; 
     textBoxId.className = "form-control redBorder" 
     spanID.className = "redText"; 
    } 
    else 
    { 
     args.IsValid = true; 
     textBoxId.IsValid = true; 
     textBoxId.className = "form-control" 
     spanID.className = ""; 
    } 
} 

Так что код остается прежним, за исключением изменения textbox.value для args.value.