【问题标题】:Checking checkbox with jquery用jquery检查复选框
【发布时间】:2013-07-26 09:34:29
【问题描述】:

我正在尝试使用 jQuery 设置复选框的选中属性,jQuery 代码工作正常,但我在代码隐藏中遇到了问题:

particular.click(function () {
    company.removeAttr('checked');
    particular.attr('checked', 'true');
});

Company 和 specific 是复选框的名称,jQuery 代码工作正常,我的问题在于代码隐藏(.cs 文件)

if (particular.Checked)
{
    company_name_blank.EnableClientScript = false;
    cif_blank.EnableClientScript = false;
}

这不起作用,因为 Checked 属性设置为 false,而实际上我将其设置为 true,正如您在 jQuery 代码中看到的那样,那么错误在哪里?为了获得更多解释,我试图根据选中的复选框禁用一些RequiredFieldValidators,但正如我所说,除非我在元素Checked = true或specification.Checked中将其默认设置为true,否则Checked属性始终设置为false =true 在代码隐藏文件中,但这不是我想要的。当我单击复选框时,我想将 Checked 属性设置为 true,这就是我使用 jQuery 的原因。

更新

我的代码

protected void Page_Load(object sender, EventArgs e)
{ 
   if (particular.Checked) 
   { 
      company_name_blank.EnableClientScript = false;
      cif_blank.EnableClientScript = false;
      contact_name_blank.EnableClientScript = false;  
      contact_cognames_blank.EnableClientScript = false;
    }
} 

【问题讨论】:

  • 您能在您粘贴的代码周围添加更多代码吗?你能也显示你的 page_load 函数吗?
  • protected void Page_Load(object sender, EventArgs e) { if (particular.Checked) { company_name_blank.EnableClientScript = false; cif_blank.EnableClientScript = false; contact_name_blank.EnableClientScript = false; contact_cognames_blank.EnableClientScript = false; } }
  • 如果特别是复选框,使用更改事件而不是点击事件
  • 你试过用 .prop() 代替 .attr() 吗?
  • 你如何得到你的代码?您有提交表单的按钮吗?

标签: jquery


【解决方案1】:

尝试使用 :checked 过滤器

particular.is(':checked')

【讨论】:

    【解决方案2】:

    在您的网站中,您将有一个这样的按钮:

    <asp:Button runat="server" ID="btnClick" OnClick="btnClick_Click" Text="Click here" />
    

    在你后面的代码中应该有这样的东西:

    protected void btnClick_Click(object sender, EventArgs e)
    {
        if (particular.Checked) 
        { 
          company_name_blank.EnableClientScript = false;
          cif_blank.EnableClientScript = false;
          contact_name_blank.EnableClientScript = false;  
          contact_cognames_blank.EnableClientScript = false;
        }
    }
    

    可以将Page_Load中的代码去掉,移到按钮点击函数中

    更新 - 问题的正确解决方案

    正确的解决方案是使用 ValidationEnable Javascript 函数来禁用/启用RequiredFieldValidators。

    此解决方案的代码:

    var emailEmpty = $("#registerContent").find('[id$=email_blank]'); //This is a jQuery object
    ValidationEnable(emailEmpty[0], false); //This will disable the validator.
    

    我们使用“[0]”的原因是因为我们需要 jQuery 对象内部的 DOM 元素(参见:http://api.jquery.com/get/?rdfrom=http%3A%2F%2Fdocs.jquery.com%2Fmw%2Findex.php%3Ftitle%3DCore%2Fget%26redirect%3Dno

    【讨论】:

    • 认为它不会解决我的问题,因为我需要根据选中的复选框禁用一些RequiredFieldValidator,因为我隐藏了其中一些复选框,例如,当我单击特定复选框时,我会显示一些文本框,如果我单击公司复选框,我将显示其他文本框。所以我的问题是我在同一页面中有所有RequiredFieldValidators,所以当我尝试提交表单时,我需要禁用(或强制验证它们)管理隐藏文本框的RequiredFieldValidators。你明白我在做什么吗??
    • 好吧,明白了 :) 您需要通过 Javascript 禁用验证器。当您有验证器时,您可以使用 Javascript 中提供的函数 ValidatorEnable。一个例子:geekswithblogs.net/jonasb/archive/2006/08/11/87708.aspx希望这就是你要找的!
    • Ty,这正是我要找的,我刚刚试过这个:company.change(function () { $("#part").css("background-color", ""); $("#comp").css("background-color", "rgb(159,209,207)"); specific.removeAttr('checked'); company.attr('checked', 'checked'); userName.hide(); cogname.hide(); companyName.show(); cif.show(); contactName.show(); contactCogname.show(); ValidatorEnable(emailEmpty, false); });但是ErrorMessage还是火了,那么说明Validator还是可以的,我做错什么了???又来了^^
    • 你是如何定义 emailEmpty 的?
    • var emailEmpty = $("#registerContent").find('[id$=email_blank]');我确保它工作正常,因为我尝试使用 emailEmpty.hide() 并且它消失了,所以我认为问题出在 ValidatorEnable(emailEmpty, false) 为什么?我不知道,希望你能帮我解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2012-05-12
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    相关资源
    最近更新 更多