0

我有一个表单,我希望它使用我用 jQuery 制作的方法 validateForm() 进行验证:

function validateForm() {
var count = 0;

$("input[type='text']").each(function () {
    if ($(this).id == "AbdominalCircumferencetext") {
        if ($("#AbdominalCircumferencetext").val() == "" || ($("#AbdominalCircumferenceradio").val().length == 0)) {
            ($("#AbdominalCircumferencetext").css("border", "2px solid red"));
            ($("#AbdominalCircumferenceradio").css("border", "2px solid red"));
            count++;
        }
    }
    if ($(this).val() == "") {
        $(this).css("border", "2px solid red");

        count++;
    }
    else {
        $(this).css("border", "");
    }

});

var checkboxGroupNames = [];

$(':radio').each(function () {
    var nameOfCheckBoxGroup = $(this).attr('name');
    var nameExistInList = jQuery.inArray(nameOfCheckBoxGroup, checkboxGroupNames);
    if (nameExistInList < 0) {
        checkboxGroupNames.push(nameOfCheckBoxGroup);
    }
});

   var counter = 0;
var counts = 0;
$.each(checkboxGroupNames, function () {
    if ( $("input[name='" + checkboxGroupNames[counter] + "']:checked").length === 0) {
        $("#" + checkboxGroupNames[counter] + "radio").css("border", "2px solid red");
        counts++;
    } 
    else {
        $("#" + checkboxGroupNames[counter] + "radio").css("border", "");
    }
    counter++;





});
if (counts == 0 && count == 0) {
    return true;
} else {
    alert("Du måste fylla i alla rutorna samt välja något alternativ av radioknapparna!");
    return false;
}

}

问题是我想对每个没有值的文本字段或单选按钮进行计数。因此,每次边框设置为红色时,它都没有值,在这种情况下,我想像在代码中一样进行计数。然后在代码通过所有文本框和单选按钮之后,我想查看它们是否失败。但我不能像我的代码末尾那样计算。它说它永远是真的。如果有更好的方法来做到这一点?还是我以正确的方式做事,但语法错误或其他什么?

4

1 回答 1

0

您的代码似乎有点“到处都是”。如果你有一个包含三个变量的函数,名为“count”、“counter”和“counts”,你应该会觉得你走错了方向:)

如果我正确理解了您的代码,您要做的就是检查文本类型的输入是否为空并检查所有单选按钮选项。如果是这样的话,我会写一些像这样http://jsbin.com/iluquz/4/edit

function validateForm() {

var isMissingAnswer = false,
  radioButtons = [];

// Go through inputs in form
$('input:not([type="submit"])').each(function() {

    // Collect radio button names
    if( this.type == 'radio' ) {
      if( $.inArray(this.name, radioButtons) == -1 ) {
        radioButtons.push(this.name);
      }
    }

    // Check if answer is given
    else {
      if( this.value == '' ) {
        $(this).css('border', 'red solid 2px');
        isMissingAnswer = true;
      } else {
        $(this).css('border', '');
      }            
    }        
});

// Go through radio buttons and make sure they're checked
$.each(radioButtons, function(i, name) {
    var $radioButtons = $('input[name="'+name+'"]');
    if( $radioButtons.filter(':checked').length == 0 ) {
      $radioButtons.parent().css('border', 'red solid 2px');
      isMissingAnswer = true;
    } else {
      $radioButtons.parent().css('border', '');
    }
});

if( isMissingAnswer ) {
    alert("Du måste fylla i alla rutorna samt välja något alternativ av radioknapparna!");
    return false;
} else {
    alert('Allt gick bra :)');
    return true;
}

}
于 2013-07-29T16:22:47.070 回答