JQuery帮助复选框及其值

时间:2009-04-03 06:00:36

标签: php javascript jquery

我是javascript和JQuery的新手,但我设法让我的第一个ajax脚本几乎100%工作。也许今天将是我的幸运日,我可以完成这一切。 :)

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

我所拥有的是2个javascript文件。一个叫做ajax.js,并且具有folling语法。它调用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”说我应该放('#adCustRptDly')。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'

中的数据,我仍然看到复选标记

3 个答案:

答案 0 :(得分:2)

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

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

要使用jQuery执行此操作,您可以执行$('#checkboxid').attr('checked', true);

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

如果你想取消选中一个框,你可能只需要javascript中的另一个if 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));
}