# Validators depending oneditprepare

**URL:** <https://discourse.nodered.org/t/validators-depending-oneditprepare/2398>\
**Category:** Developing Nodes\
**Created:** [19 August 2018 09:29 UTC](https://discourse.nodered.org/t/validators-depending-oneditprepare/2398 "2018-08-19T09:29:02Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sineos](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sineos/32/3440_2.png) [@Sineos](https://discourse.nodered.org/u/Sineos)\
**Post date:** [19 August 2018 09:29 UTC](https://discourse.nodered.org/t/validators-depending-oneditprepare/2398/1 "2018-08-19T09:29:02Z")

</div>

With oneditprepare I switch the html form elements:

```
oneditprepare: function() {
  $("#node-input-ThresholdType").change(function() {
    if ($(this).val() === "fixed") {
      $(".form-row-ThresholdTypeFixed").show();
      $(".form-row-ThresholdTypeDynamic").hide();
    } else {
      $(".form-row-ThresholdTypeFixed").hide();
      $(".form-row-ThresholdTypeDynamic").show();
    }
  });

```

Depending on the shown elements I would like to validate / require different `#node-input`fields. When setting the validator or required properties in `defaults` they are globally active.  
How can I set these properties according to the `change` function?

---

<div class="post-metadata">

**Author:** ![clickworkorange](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/clickworkorange/32/12109_2.png) [@clickworkorange](https://discourse.nodered.org/u/clickworkorange)\
**Post date:** [29 September 2019 21:49 UTC](https://discourse.nodered.org/t/validators-depending-oneditprepare/2398/2 "2019-09-29T21:49:43Z")

</div>

I haven't tried this myself, but I wouldn't be surprised if you could get away with something like

```auto
oneditprepare: function() {
    $("#node-input-ThresholdType").change(function() {
        if ($(this).val() === "fixed") {
            node.defaults.ThresholdType.validate = function(value) {
...

```

---

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [30 September 2019 05:43 UTC](https://discourse.nodered.org/t/validators-depending-oneditprepare/2398/3 "2019-09-30T05:43:54Z")

</div>

Hi Sineos,

I think you can do something like this:

```auto
defaults: {
            ...
            thresholdTypeFixed: {
                value: 0,
                validate: function(v) {
                    var thresholdType = $('#node-input-ThresholdType').val();
                    if (thresholdType === "fixed")
                           // Return value based on type ...
                }},

```

Bart
