无法使用Javascript添加类

时间:2013-08-21 07:49:47

标签: javascript asp.net

我想通过添加验证类(即提交)来设置所有空文本框的样式,但我的代码不起作用。不确定它是脚本还是customvalidator。我只想用JS。 如果我说

target.style.border="1px solid red";
虽然它的工作。只是无法添加课程。

JS:

<link href="StyleSheet.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
 function validateTextBox(sender, args) {
        var target = document.getElementById(sender.controltovalidate);
        var is_valid = target.value != "";
        if (is_valid) {
            target.removeClass("validate");
        }
        else {
            target.addClass("validate");
        }
        args.IsValid = is_valid;
    } 
</script>      

ASPX:

 <asp:TextBox ID="txtSurname" runat="server"></asp:TextBox>
 <asp:CustomValidator ID = "CustomValidator1" runat="server" 
 ControlToValidate="txtSurname" ValidateEmptyText="true" 
 ClientValidationFunction="validateTextBox"
 ></asp:CustomValidator>

CSS:

 .validate
 {
   border:2px solid red;
 }

5 个答案:

答案 0 :(得分:2)

document.getElementById返回一个DOM元素,该元素没有addClass或removeClass API。

请参阅:Element

要申请课程,请尝试(提出想法,请根据确切的业务逻辑进行调整):

target.className = target.className + " validate"

如果我们使用原始JS,我们必须编写原始代码并忘记奢侈的addClass或removeClass :-) 要删除课程,请参阅以下答案: Remove class using javascript

答案 1 :(得分:0)

试试这个......

function validateTextBox(sender, args) {
        var target = document.getElementById(sender.controltovalidate.ClientID);
        if (target.value != "") {
            target.removeClass("validate");
        }
        else {
            target.addClass("validate");
        }
        args.IsValid = "";
    }  

答案 2 :(得分:0)

试试这个。简单的方法。

function validateTextBox() {
        var target = document.getElementById("#<%= txtSurname.ClientID %>");
        **var is_valid = target.value;**
        **if (is_valid!="") {**
            target.removeClass("validate");
              **return true;**
        }
        else {
            target.addClass("validate");
            **return false**
        }

    } 

ASPX:

 <asp:TextBox ID="txtSurname" runat="server"></asp:TextBox>
 <asp:CustomValidator ID = "CustomValidator1" runat="server" 
 ControlToValidate="txtSurname" ValidateEmptyText="true" 
 ClientValidationFunction=**"Javascript:return validateTextBox()"**
 ></asp:CustomValidator>

答案 3 :(得分:0)

也许您想使用jquery validation plugin?这是广泛使用的插件。

<asp:TextBox ID="txtSurname" runat="server" CssClass="toValidate"></asp:TextBox>

jQuery(function() {
    // You can specify some validation options here but not rules and messages
    jQuery('form').validate(); 
    // Add a custom class to your name mangled input and add rules like this
    jQuery('.toValidate').rules('add', { 
        required: true
    });
});

此代码应检查表单submition之前文本框是否为空。

答案 4 :(得分:0)

更改var target = document.getElementById(sender.controltovalidate.ClientID);

至:var target = document.getElementById(sender.ClientID);