Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • lori ryan 235 posts 567 karma points
    15 days ago
    lori ryan
    0

    Umbraco forms - form validation summary alternative

    I know we can put the form validation summary - is it possible to put a message if there a validation errors something like "Please ensure all fields are filled in" beside the submit button?

  • Brendan Rice 430 posts 718 karma points
    15 days ago
    Brendan Rice
    0

    Hi Lori,

    what happens when you try the following code:

    @if (!Html.ViewData.ModelState.IsValid) 
    {
        <div class="alert">Please ensure all fields are filled in</div>
    }
    
  • lori ryan 235 posts 567 karma points
    1 week ago
    lori ryan
    0

    it just shows the message all the time becasue Html.ViewData.ModelState.IsValid is false when the form isnt filled in

  • Brendan Rice 430 posts 718 karma points
    1 week ago
    Brendan Rice
    1

    Maybe something like this would work:

    var hasErrors = false;
    foreach (ModelState modelState in ViewData.ModelState.Values) 
    {
        if(modelState.Errors.Any())
        {
            hasErrors = true;
        }
    }
    

    You could then use hasErrors to display the message?

  • lori ryan 235 posts 567 karma points
    1 week ago
    lori ryan
    0

    I think we maybe onto the wrong track Brendan when I submit the error count isnt actually counting the fields validated.

    I changed the code to the following so I could see the errors

    <table class="model-state">
        @foreach (var item in ViewContext.ViewData.ModelState) 
        {
            if (item.Value.Errors.Any())
            { 
            <tr>
                <td><b>@item.Key</b></td>
                <td>@((item.Value == null || item.Value.Value == null) ? "<null>" : item.Value.Value.RawValue)</td>
                <td>@(string.Join("; ", item.Value.Errors.Select(x => x.ErrorMessage)))</td>
            </tr>
            }
        }
    </table>
    

    and one of the errors was includeScripts 0
    but on submission it didn't catch any of the non validated fields.

  • lori ryan 235 posts 567 karma points
    1 week ago
    lori ryan
    1

    ended up going with

    $('input[type*="submit"]').on("click", function () { 
       var formId = document.activeElement.id;
       var errorDiviD = "FieldWarning" + "-" + formId;
       var divErrorList =  document.getElementById(errorDiviD);
        divErrorList.classList.remove("invisible");
    })
    

    I put a new div on form.cshtml that contained the text I want to display beside the submit button. It doesnt stop the default behaviour of the form. But will display the warning if the form doesnt go to the thank you thank page.

Please Sign in or register to post replies

Write your reply to:

Draft