0

我正在尝试根据在选择框中选择的内容快速激活/停用验证。

添加地址是可选的,如果选择了地址,则会显示国家和地区字段,并且 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 回答