【问题标题】:JQuery help with checkboxes and their valuesJQuery 对复选框及其值的帮助
【发布时间】:2009-04-03 06:00:35
【问题描述】:

我对 javascript 和 JQuery 非常陌生,但我设法让我的第一个 ajax 脚本几乎 100% 工作。也许今天是我的幸运日,我可以完成这件事。 :)

让我给你们每个文件的样本,这样你们就知道是什么了。我相信我最后一次尝试解决这个问题并没有成功,因为我混淆了这些文件。都是js,语法完全一样。

我有 2 个 javascript 文件。一种称为 ajax.js,具有以下语法。它调用 ajax.php。

$("#admEmpID").bind("change", function(e){
  $.getJSON("ajax.php?e=" + $("#admEmpID").val(),
        function(data)
        {
          $.each(data, function(i,item)
          {
            if (item.field == "admEmpStatus")
            {
              // ?? radio buttons
            }
            ............. etc




我拥有的下一个文件是这个脚本,名为 admEmp.js。我认为这个是为了我的表单验证。

$(function() {
  $('.error').hide();
  $('input.text-input').css({backgroundColor:"#FFFFFF"});
  $('input.text-input').focus(function(){
    $(this).css({backgroundColor:"#FFDDAA"});
  });
  $('input.text-input').blur(function(){
    $(this).css({backgroundColor:"#FFFFFF"});
  });

  $(".admEmpBtn").click(function() {
        // validate and process form
        // first hide any error messages
    $('.error').hide();

      var admEmpID = $("input#admEmpID").val();
    var admEmpStatus = $("input[name='admEmpStatus']:checked").val();

        $.ajax({
  type: "POST",...............etc.

我想做的是根据数据库结果切换我的复选框。如果数据库的结果为 = 1,则应选中复选框,否则应取消选中。

我现在拥有的这些脚本将从数据库中的值填充我的文本框,因此对于像我这样不知道 JQuery 及其内部工作发生了什么的人来说,我很自然地假设复选框也将填充开/关值。也许我不正确。上次我在 SO 上发帖寻求帮助时,有人提到我需要使用服务器端代码切换结果。这是正确的还是 JQuery 会为我做呢?

除了需要显示其值的复选框之外,我还有单选按钮。顺便说一句,复选框没有分组;他们每个人都有自己的价值。

感谢你们提供的任何帮助。


好的。 "dz" 说我应该放 ('#admCustRptDly').attr('checked', true);进入我的脚本,看看是否可以让我看到选中的属性,但事实并非如此。数据库中该复选框的值为 0,因此我应该看不到复选标记。我把它放到 ajax.js 文件中。这是它现在的样子。

    else if (item.field == "admCustRptDly" && item.value == "1")
    {
    //  $("checkbox#admCustRptDly").attr("checked", "checked");
      $('#admCustRptDly').attr('checked', true);
    }

这是我所做的,这让我觉得我可能正在取得一些进展。我在条件中设置了警报,但没有收到警报。如果我去找一个确实将 db 值设置为 1 的客户,那么我会收到警报。这比我以前得到的要多。但同样,即使 db = '0' 中的数据,我仍然看到复选标记

【问题讨论】:

    标签: php javascript jquery


    【解决方案1】:

    复选框的行为与其他输入字段略有不同。例如,当您拥有<input type="text" name="field1" value="foo" /> 时,文本字段会自动填充“foo”。

    但是,如果您有 <input type="checkbox" name="field2" value="1" />,则该复选框没有任何内容可填充。这是因为复选框有一个特殊的“checked”属性,它决定了它是否默认被选中。因此,填充文本框的脚本很可能为复选框输入了正确的值,但没有设置选中的属性。

    要使用 jQuery,您可以使用 $('#checkboxid').attr('checked', true);

    【讨论】:

    • 您好,感谢您的精彩解释。我完全理解你在说什么,这是有道理的。好的,在我拿出我的锤子并开始进一步弄乱这段代码之前,你能告诉我我应该把你的代码放到哪个 js 文件中吗?再次感谢!
    • 在不知道这些文件的上下文的情况下,这只是一个非常疯狂的猜测。您发布的第二个脚本看起来像是在处理表单提交,并将一些事件附加到表单交互(例如,突出显示活动文本字段)。所以这两个,也许是第一个。
    • 无论如何我都试过了,但我不确定我是否做对了。我在原始帖子中将我的更改发布在顶部。
    • 我可以发布所有代码,但它很长。我应该吗?
    【解决方案2】:

    如果我理解正确,当您更改 #admEmpID 字段(第一个 js 文件)中的值时,您有一个通过 Ajax 调用异步更新的表单。

    第二个 js 文件包含将您对表单所做的更改发回服务器的代码。我不认为这是用于表单验证(至少不是您展示的部分)。

    但我不确定问题出在哪里。当您更改某些文本字段 (#admEmpId) 时,第一个 js 文件从服务器获取数据。该数据是否未正确显示?您提到文本框填充了正确的数据。应该选择的复选框和单选按钮是否没有被选中?在这种情况下,您必须首先确保您了解从服务器返回的数据(包含在第一个 js 文件中的data 变量中)。然后,您必须验证该脚本是否处理了页面上要更新的正确元素。

    【讨论】:

    • 您好,感谢您的帮助。我有一个包含 15 个文本框、2 个单选按钮和 3 个复选框的表单。脚本从数据库中检索数据并填充文本框,但复选框和单选按钮没有任何反应。
    【解决方案3】:

    当你想取消选中一个框时,你可能只需要在你的 javascript 中添加另一个 else if 子句:

    else if (item.field == "admCustRptDly" && item.value == "0")
    {
      $('#admCustRptDly').attr('checked', false);
    }
    

    但是,您可以将这两种情况简化为一条语句,如下所示:

    else if (item.field == "admCustRptDly")
    {
      $('#admCustRptDly').attr('checked', ((item.value == "1") ? true : false));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 2012-01-26
      • 2010-09-16
      相关资源
      最近更新 更多