Проверка jQuery: использование удаленных валидаторов - PullRequest
1 голос
/ 19 апреля 2011

Я пытаюсь реализовать то, что мы видим здесь:

http://weblogs.asp.net/cibrax/archive/2008/08/01/combining-jquery-validation-with-asp-net-mvc.aspx

У меня проблема в том, что он не использует удаленные валидаторы.

<form action="<%=Url.Action("Register", "Home")%>" method="post" id="form-sign-up">

В моем случае, каждый раз, когда я нажимаю "Отправить", он отправляет сообщение в действие "Регистр" - мне никогда не удавалось использовать методы валидатора Json. На самом деле я загружаю образец, и удаленные сообщения не работают для меня. Работает ли удаленная часть в образце для кого-либо еще?

Кто-нибудь знает, как заставить их работать или есть лучший пример?

По сути, у меня есть модальная всплывающая форма редактирования. Я хочу сделать всю проверку перед публикацией в методе сохранения (или в этом случае Register).

Я просто должен проверить, требуется ли это, и удаленный валидатор должен проверить, является ли он дубликатом. В моем примере я скучаю по валидаторам и в конечном итоге в методе сохранения. Очевидно, я хочу сохранить, только если поле заполнено и не является дубликатом.


РЕДАКТИРОВАТЬ 0:

Я использую MVC 2

<form action="/Region/Save" method="post" id="Form-AddRegion">
    <div class="editor-label">
        <%: Html.Label("Region:") %>
        <%: Html.TextBoxFor(model => model.Region, new { @class = "edit required remote"}) %>
    </div>

    <p>
        <input type="submit" value="Save" />
        <input type="button" onClick="window.parent.CloseWindow();" value="Cancel" />
    </p>
</form>

public ActionResult ValidateRegion(string name)
{
    if (!something)
        return Json(true, JsonRequestBehavior.AllowGet);
    return Json(false, JsonRequestBehavior.AllowGet);
}

<script type="text/javascript">

    $(document).ready(function () {

        alert('jQuery is referenced properly');

        $("#Form-AddRegion").validate({
            rules:
            {
                //rules each for specified input-id
                Region:
                {
                    required: true,
                    remote: '<%=Url.Action("ValidateRegion","Region") %>'
                }
            },
            messages:
            {
                Region:
                {
                    required: "Please provide a Region",
                    remote: jQuery.format("{0} is already in use")
                }
            }
        });
    });
</script>

Так что проблема в том, что при отправке я всегда публикую в методе сохранения /Region/Save перед валидатором ValidateRegion! Я пропускаю маршрут в global.asax.cs?

Мне нужно знать, когда код javascript отправляет / попадает в метод проверки? Я бы предположил при отправке, но, кажется, никогда не звонят!?

Это, конечно, раздражает, когда люди не читают вашу проблему и не указывают на основную справочную документацию, как ни странно, я уже был там.

1 Ответ

0 голосов
/ 19 апреля 2011

Любой вид проверки формы должен быть подключен к функции onsubmit, если эта функция вернет ложную форму, а не будет передана.

<form onSubmit="function(){return false;}"> 

никогда не будет отправлено

для подключения jquery validate к onsubmit выполняется функцией validate (), которая NEEDS должна быть сделана для готового документа

и еще одна вещь, все входные данные НЕОБХОДИМОСТЬ атрибут name, чтобы иметь возможность проверки

больше документации и множество примеров можно найти здесь http://docs.jquery.com/Plugins/Validation/

EDIT

Это ваш код в jsFiddle: http://jsfiddle.net/fzf3q/1/

он работает там, только sugesstion, убедитесь, что функция validate включена непосредственно перед ее использованием:

alert($("#Form-AddRegion").validate)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...