0

私はこれを止めようとしています>> http://jsfiddle.net/justmelat/8x2WX/

私のjsfiddleを見る場合は、必要なフィールドボタンをクリックして、もう一度クリックしてください。空のフィールドを追加し続けることがわかります [これはコードが要求していることです]。

これを行うためのより良い方法は何ですか? ユーザーがたまたまボタンを2回クリックした場合、またはフォームに入力して残っているものをテストしているときに、追加ではなく、検証済みのテキストの表示を再開したい. text() と html() を試しましたが、正しく動作しません。

$("#section-11,#section-12,#section-13,#section-1011").hide();

var projtype = new Array(
        {value : 'Cars', sect_id : 'fieldset#section-11'},
        {value : 'Planes', sect_id : 'fieldset#section-12'},
        {value : 'Boats', sect_id : 'fieldset#section-13'}
    );
$("select#1169").on('change',function () {
var thisVal = $(this).val();
 var sect_id ="";
     //$('fieldset[id!="mainSection"]').hide();
    $(projtype).each(function() {
$(this.sect_id).hide();
        if(this.value == thisVal) {
        $(this.sect_id).show();
        }
    });        
});

$("#btnCatchReqFlds").on('click', function() {
    //$("#holdErrMsg").append(" ");
    var requiredButEmpty = $("fieldset:visible").find('input[class*="-required"], select[class*="-required"]').filter(function() {
      return $.trim($(this).val()) === "";  
    });
    if (requiredButEmpty.length) {
        requiredButEmpty.each(function () {

            $("#holdErrMsg").append("Please fill in the " + this.name + "<br />");
        });
    }
    return !requiredButEmpty.length;
});
4

5 に答える 5

2

を使用して、最初にプレースホルダーを空にすることができますempty()

$("#btnCatchReqFlds").on('click', function() {
    //$("#holdErrMsg").append(" ");
    $("#holdErrMsg").empty();
    var requiredButEmpty = $("fieldset:visible").find('input[class*="-required"], select[class*="-required"]').filter(function() {
      return $.trim($(this).val()) === "";  
    });
    if (requiredButEmpty.length) {
        requiredButEmpty.each(function () {

            $("#holdErrMsg").append("Please fill in the " + this.name + "<br />");
        });
    }
    return !requiredButEmpty.length;
});
于 2012-05-08T03:28:50.533 に答える
1
$("#btnCatchReqFlds").on('click', function() {
    //$("#holdErrMsg").append(""); not necessary
    var requiredButEmpty = $("fieldset:visible").find('input[class*="-required"], select[class*="-required"]').filter(function() {
      return $.trim($(this).val()) === "";  
    });
    if (requiredButEmpty.length) {
        $("#holdErrMsg").empty(); // empty the message holder
        requiredButEmpty.each(function () {

            $("#holdErrMsg").append("Please fill in the " + this.name + "<br />");
        });
    }
    return !requiredButEmpty.length;
});
于 2012-05-08T03:52:58.393 に答える
1

私が見ることができるように、「errors_」+ this.nameのようなIDを持つ要素を作成し、表示したいテキストでその要素を更新するのが最善/きちんとした方法です:

var errorElementId = "errors_" + this.name;
if($('#'+errorElementId).length > 0) {
    var errorElement = document.createElement("p");
    errorElement.setAttribute("id", errorElementId);
    $("#holdErrMsg").append(errorElement);
} else {
    errorElement = $(errorElementId)
}
errorElement.text("Your fancy error string")

お役に立てれば :-)

于 2012-05-08T03:41:02.597 に答える
1

#holdErrMsg検証の開始時に単にクリアしないのはなぜですか?

$("#btnCatchReqFlds").on('click', function() {
    $("#holdErrMsg").empty();

    ...
});
于 2012-05-08T03:28:00.827 に答える
1

http://jsfiddle.net/8x2WX/3/ エラーチェックを実行する前に、エラーボックスを空にしています。

于 2012-05-08T03:28:29.817 に答える