2010-07-20 4 views
0

У меня есть форма с двумя разделами. Каждый раздел расширяется с помощью своего переключателя, так что есть только один видимый раздел за раз. И я использую ASP.NET MVC HtmlHelper для генерации поля следующим образом:jQuery проверить необходимый метод и текстовые поля с 0

<label for="type-permanent" class="radio active"> 
    <input type="radio" name="Type" value="Type1" id="type1" /> Label1 
</label> 
<%= Html.TextBox("Field1", Model.IntProperty1) %> 
<label for="type-permanent" class="radio active"> 
    <input type="radio" name="Type" value="Type2" id="type2" /> Label2 
</label> 
<%= Html.TextBox("Field2", Model.IntProperty2) %> 

У меня есть две функции, чтобы я мог определить, какой раздел активен:

function isType1() { return $("#type1").attr("checked"); } 
function isType2() { return $("#type2").attr("checked"); } 

Наконец, я получил в followind методы проверки настройки:

Field1: { 
    required: isType1, 
    min: 1 
}, 
Field2: { 
    required: isType2, 
    min: 1 
} 

Теперь дело в том, что если я прохожу пустую модель с точки зрения, оба поля установлены в 0 (по умолчанию для междунар). Теперь, если пользователь заполняет некоторые поля и пытается отправить форму, есть ошибка проверки, потому что даже если поле в другом разделе не требуется, но оно имеет значение - 0, это неверно, так как оно должно быть больше 1 Как я могу преодолеть это, кроме полей очистки в скрытых разделах перед подачей формы?

ОБНОВЛЕНИЕ. Наверное, мне нужен какой-то условный метод проверки.

+0

Поскольку вы уже используете функцию, а не твердое значение, чтобы определить каждое значение 'required', почему бы не сделать то же самое с' min'? То есть, используйте 'min' of 1, только если это обязательное поле. –

+0

Хм, документация не говорит, что min поддерживает такой синтаксис – HiveHicks

ответ

1

Если вы можете построить его, требуемый метод принимает функцию обратного вызова, так что, может быть, вы можете создать в проверке нулевого нуля в требуемом валидатор с помощью: http://docs.jquery.com/Plugins/Validation/Methods/required#dependency-callback

HTH.

+0

Итак, вы имеете в виду, что я должен сделать что-то вроде этого: required: function() {return $ ("# type1"). Attr ("checked") && parseInt ($ ("# Field1"). val())> = 1; } Я думаю, это неправильно, потому что это означает, что поле требуется, только если оно находится в видимом разделе И больше или равно 1 – HiveHicks

+0

Ну, если вы даете нуль в некоторых случаях, а не в других, вам нужно для определения этого случая, а затем проверить этот случай в требуемой функции. Итак, способы сделать это: «if (<% = (проверка для пустоты модели)%>) return true;». Если модель пуста, она дает поле проход. Или используйте метод $ .data для присоединения дополнительной информации к элементу, когда модель пуста, и говорит, что этот элемент тоже проходит ... Но у вас должно быть обозначение, чтобы сделать различие. В противном случае нет способа разрешить эту разницу. –

Смежные вопросы