【问题标题】:Enable/disable text box placed in gridview on check event of check box with javascript启用/禁用放置在gridview中的文本框在复选框的检查事件中使用javascript
【发布时间】:2011-06-07 16:39:53
【问题描述】:

我有 gridview,它在不同的项目模板字段中包含复选框和文本框。加载网格时将禁用文本框。现在我想要的是,当用户选中任何复选框时,应该启用该特定行中受尊重的文本框。当用户取消选中选中的复选框时,文本框应该再次清除并禁用。现在,当用户单击保存按钮时,javascript 应该验证所有已选中相应复选框的文本框。

验证是

(1)文本框不能为空

(2)它应该只允许字符和空格(我想在那个文本框中输入名称)。我如何编写 java 脚本来执行所有这些任务。我是 javascript 新手,完全不了解它的概念。

提前致谢

【问题讨论】:

    标签: javascript asp.net


    【解决方案1】:
    <script type="text/javascript">
        var nameRegex = /^[a-zA-Z ]+$/;
        function validateName(sender, args) {
            args.IsValid = nameRegex.test(args.Value);
        }
    </script>
    
    
    <asp:GridView runat="server" ID="GridView1" AutoGenerateColumns="false" DataKeyNames="Id" >
        <Columns>
            <asp:TemplateField >
                <ItemTemplate>
                    <asp:CheckBox runat="server" AutoPostBack="true" OnCheckedChanged="SelectRow"  />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="Id" HeaderText="Id" />
            <asp:TemplateField HeaderText="Name" >
                <ItemTemplate>
                    <asp:TextBox runat="server" ID="NameTextBox" Enabled="false" Text='<%# Eval("Name") %>' />
                    <asp:CustomValidator runat="server" ID="NameValidator" ControlToValidate="NameTextBox"
                        ValidateEmptyText="true" Text="!" Display="Static" Enabled="false"
                        ClientValidationFunction="validateName" OnServerValidate="ValidateName" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    
    
    public partial class WebForm1 : System.Web.UI.Page
    {
        private static readonly Regex nameRegex = new Regex("^[a-zA-Z ]+$");
    
        protected void ValidateName(object source, ServerValidateEventArgs args)
        {
            args.IsValid = nameRegex.IsMatch(args.Value);
        }
    
        protected void SelectRow(object sender, EventArgs e)
        {
            Page.Validate();
            var checkBox = (CheckBox)sender;
    
            if (Page.IsValid || !checkBox.Checked)
            {
                var textBox = (TextBox)checkBox.NamingContainer.FindControl("NameTextBox");
                var nameValidator = (CustomValidator)checkBox.NamingContainer.FindControl("NameValidator");
    
                textBox.Enabled = checkBox.Checked;
                nameValidator.Enabled = checkBox.Checked;
                if (!checkBox.Checked)
                    textBox.Text = "";
            }
            else
            {
                checkBox.Checked = false;
            }
        }
    
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                GridView1.DataSource = from item in Enumerable.Range(0, 10)
                                       select new
                                       {
                                           Id = item,
                                           Name = "" 
                                       };
                GridView1.DataBind();
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      相关资源
      最近更新 更多