0

選択ボックスで選択されたものに応じて、検証をアクティブ化/非アクティブ化するために spry を取得しようとしています。

住所の追加はオプションです。住所を選択すると、国と地域のフィールドが表示され、spry_country、spry_region を検証する必要があります。

価格はオプションです。価格を追加すると、価格と価格税のフィールドが表示され、spry_price と spry_price_tax の検証が必要になります。

正常に動作するように見える次のコードがありますが、住所を選択して気が変わって住所を入力しないことにした場合、コードはフィールドを非表示にしますが、フォームを送信できないため、非表示のフィールドを検証しようとしているようです. これが理にかなっていることを願っています:)

/* If address selected */
$("#location_option").change(function() {
    if ($("#location_option").val() == "address"){
        $(".show_location").show();
        /* activate spry */
        var spryselect4 = new Spry.Widget.ValidationSelect("spry_country", {isRequired:true});
        var spryselect5 = new Spry.Widget.ValidationSelect("spry_region", {isRequired:true});
    }
    else{
        $(".show_location").hide();
        var spryselect4 = new Spry.Widget.ValidationSelect("spry_country", {isRequired:false});
        var spryselect5 = new Spry.Widget.ValidationSelect("spry_region", {isRequired:false});
    }
});
$("#location_option").change();

/* If price selected */
$("#price_option").change(function() {
    if ($("#price_option").val() == "price"){
        $(".show_price").show();
        /* activate spry */
        var sprytextfield2 = new Spry.Widget.ValidationTextField("spry_price", "none", {isRequired:true});
        var spryselect7 = new Spry.Widget.ValidationSelect("spry_price_tax", {isRequired:true});
    }
    else{ 
        $(".show_price").hide();
        var sprytextfield2 = new Spry.Widget.ValidationTextField("spry_price", "none", {isRequired:false});
        var spryselect7 = new Spry.Widget.ValidationSelect("spry_price_tax", {isRequired:false});
    }
});
$("#price_option").change();

/* If date selected */
$("#date_option").change(function() {
    if ($("#date_option").val() == "date"){
        $(".show_date").show();
        /* activate spry */
        var sprytextfield3 = new Spry.Widget.ValidationTextField("spry_start_date", "none", {isRequired:true});
        var sprytextfield4 = new Spry.Widget.ValidationTextField("spry_finish_date", "none", {isRequired:true});
    }
    else{ 
        $(".show_date").hide();
        var sprytextfield3 = new Spry.Widget.ValidationTextField("spry_start_date", "none", {isRequired:false});
        var sprytextfield4 = new Spry.Widget.ValidationTextField("spry_finish_date", "none", {isRequired:false});
    }
});
$("#date_option").change();
4

2 に答える 2

1

これを行う代わりに:

var spryselect4 = new Spry.Widget.ValidationSelect("spry_country", {isRequired:false});

置く:

spryselect4.reset(); // remove the error message
spryselect4.destroy(); // remove the validation 
于 2012-11-02T09:31:20.120 に答える
1

次を使用してソートしました:

spryselect4 = new Spry.Widget.Utils.destroyWidgets("spry_country");
于 2012-11-02T09:33:44.440 に答える