1

我想通过添加一个验证类(即提交)来设置所有空文本框的样式,但我的代码不起作用。不确定它是脚本还是 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;
 }
4

5 回答 5

2

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

见:元素

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

target.className = target.className + " validate"

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

于 2013-08-21T08:58:34.837 回答
0

尝试这个...

function validateTextBox(sender, args) {
        var target = document.getElementById(sender.controltovalidate.ClientID);
        if (target.value != "") {
            target.removeClass("validate");
        }
        else {
            target.addClass("validate");
        }
        args.IsValid = "";
    }  
于 2013-08-21T07:55:54.647 回答
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>
于 2013-08-21T08:04:22.430 回答
0

也许您想使用jquery 验证插件?这是一个广泛使用的插件。

<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
    });
});

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

于 2013-08-21T08:04:22.600 回答
0

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

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

于 2013-08-21T08:06:18.400 回答