Плагин проверки jQuery - удаление элементов

Я использую плагин проверки jQuery. В большинстве моих тегов типа ввода ... у меня есть class = 'required'.

Когда я отправляю страницу с помощью JavaScript, на странице обнаруживаются элементы управления с этим классом. Однако есть несколько флажков, которые мне не нужно проверять.

Я пробовал полностью удалить код класса из входного тега, также пробовал class = 'cancel' и class = 'required: false.

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

Как мне сохранить возможность выполнять Request.Form и находить свой объект флажка, но в то же время, когда форма отправляется, не применять проверку к этому конкретному элементу управления.

Спасибо.


Отредактируйте здесь.

Это то, что я использую без "проверенного" кода и тернарного оператора. В моем теге ввода я вызываю такую ​​функцию ...

sb.Append("     <td><input type='checkbox' id='chkFlashedCarton' name='chkFlashedCarton' " + strDisabled + " value='true' " + GetPackagingSizeTypeControlValue("chkFlashedCarton") + "  />" + crlf);

Внутри этой функции я проверяю, возвращается ли True или False, вот так.

case "chkFlashedCarton":
                strResultValue = pst.FlashedCarton.ToString();
                if (strResultValue == "True")
                {
                    strResultValue = " checked";
                }
                break;

strResultValue - это то, что возвращается обратно.

Это помогает видеть? Спасибо.


person d3020    schedule 17.03.2010    source источник


Ответы (1)


Я не думаю, что отсутствие флажка связано с проблемой проверки. По умолчанию входные данные без значений не отправляются обратно вместе с формой. Один из способов обойти это для флажков - иметь скрытое поле формы для каждого флажка, которое устанавливает противоположное значение с тем же именем, что и флажок. Когда форма будет отправлена ​​обратно с установленным флажком, вы получите оба значения. Если флажок не установлен, вы получите значение по умолчанию (из скрытого поля). Таким образом, вам нужно только проверить, содержит ли значение флажка значение, отличное от значения по умолчанию, и действовать соответствующим образом на стороне сервера.

<input type='checkbox' name='cb1' value='true' /> Check Me
<input type='hidden' name='cb1' value='false' />

Затем вы можете опустить класс required и быть уверенным, что вы всегда получите какое-то значение для флажка.

На стороне сервера вы делаете что-то вроде:

 bool cb1Flag = false;
 if (Request.Form["cb1"].ToUpper().Contains("TRUE"))
 {
      cb1Flag = true;
 }

Изменить (на основе вашего редактирования)

Попробуй это:

sb.Append("     <td><input type='checkbox' id='chkFlashedCarton' name='chkFlashedCarton' " + strDisabled + " value='true' " );
if (pst.FlashedCarton)
{
    sb.Append( " checked='checked'" );
}
sb.Append( "  />" + crlf);
person tvanfosson    schedule 17.03.2010
comment
tvanfosson, это как раз та помощь, которая мне здесь нужна. Большое спасибо за то, что уделили время, чтобы ответить и показать пример, очень полезный. Спасибо. - person d3020; 17.03.2010
comment
tvanfosson, могу ли я спросить вас или других присутствующих, что-нибудь еще по этому поводу? Поскольку было установлено значение value = 'true', как я могу установить это значение динамически? Другими словами, когда страница загружается, мне нужно проверить ее или нет, в зависимости от условия. В других элементах управления, где значение еще не установлено в true, я делаю это как - value = '+ CallMyFunction () +'. Но как это будет работать здесь, если значение уже установлено на true? - person d3020; 18.03.2010
comment
Предположим, вы используете ASP.NET (раз уж вы говорите о Request.Form). В мире MVC вы должны основывать его на модели - и, вероятно, использовать HtmlHelper - <%= Html.CheckboxFor( model => model.CBProperty ) %>. В стандартном приложении WebForms вы можете использовать привязку (если в контексте привязанного элемента управления) или раскрыть свойство на странице и таким образом получить значение <input type="checkbox" name="cb1" value='<%= this.CB1Flag ? "true" : "false" %>' /> - person tvanfosson; 18.03.2010
comment
Я использую ASP.NET, и это стандартное приложение WebForms. Я выписываю чекбокс через StringBuilder вот так. Вот что у меня есть сейчас ... sb.Append (‹td› ‹input type = 'checkbox' id = 'chkFlashedCarton' name = 'chkFlashedCarton' + strDisabled + value = 'true' /› + crlf); Не могли бы вы пояснить мне, как это свойство value изменится на истинное и вызовет функцию? - person d3020; 18.03.2010
comment
@ d3020 - value = '+ chkFlashedCarton.ToString () +' / ›- или что-то еще, что содержит фактическое текущее значение. - person tvanfosson; 18.03.2010
comment
Я могу вернуть True из базы данных, если мне нравится, что вы говорите. значение - '+ CallFunction +'. Однако пара вещей. 1) Я не хочу отменять, я не думаю, значение по умолчанию true, о котором мы говорили изначально, верно? 2) Я просто хочу интерпретировать, что True возвращается как установленный флажок, иначе не проверяйте его. Насколько я понимаю, можно подумать, что нужно поставить какое-то условие на checked = '+ CallFunctionHere +', но это, похоже, не сработало. - person d3020; 18.03.2010
comment
Подумайте еще немного о наличии условия в свойстве checked. Если бы я сделал оператор if, как вы здесь говорили, что-то вроде ... checked = 'if this CallFunction () return true check else false' Будет ли это работать и как эта строка будет выглядеть синтаксически разумно? - person d3020; 18.03.2010
comment
@ d3020 - извините, я неправильно понял. Да, оставьте true / false и добавьте checked='" + CallFunction() ? "checked" : "" + ... Обратите внимание, что это синтаксис C #, при необходимости измените его, если вы используете VB. - person tvanfosson; 18.03.2010
comment
Думаю, я нашел решение. Не уверен, что это лучший способ, но, похоже, он работает. Я вызвал CallFunction из своего тега ввода. Затем внутри этого есть условия, которые говорят, что если возвращенное значение истинно, то возврат проверяется. Кажется, это работает. Если у вас будет время ответить, вам будет интересно услышать лучший подход. Еще раз спасибо за ваше время и помощь. - person d3020; 18.03.2010
comment
@ d3020 - Я не хочу показаться жалким, но, учитывая количество времени, которое я потратил на то, чтобы помочь вам, вы можете хотя бы проголосовать за мой ответ, если не принять его. Так работает система. Для получения дополнительной информации см. FAQ (stackoverflow.com/faq). - person tvanfosson; 18.03.2010
comment
Извините, это мой первый пост здесь. Я не был уверен, как работает система и что мне нужно это делать. Думаю, я сделал это только для тебя. Должно быть, мне что-то не хватает синтаксиса. Теперь у меня есть это ... checked = '+ GetPackagingSizeTypeControlValue (chkFlashedCarton) +? 'checked': '' ', но даже когда он возвращает False, он все равно проверяется. - person d3020; 18.03.2010
comment
Вы используете C #? Синтаксис, который я использовал, использовал тернарный оператор в C # booleanExpression ? result-if-true : result-if-false или checked='" + (GetPackagingSizeTypeControlValue("chkFlashedCarton") ? "checked" : "") + "' />". Я заключил тройное выражение в круглые скобки, хотя они не являются строго обязательными. - person tvanfosson; 18.03.2010
comment
Да, используется C #. Я слежу за тем, что вы здесь говорите, но все же результат всегда проверяется с использованием того, что вы здесь предоставили, даже если возвращаемое значение из этой функции - False. Странный. - person d3020; 18.03.2010
comment
Тогда попробуйте изменить его на это: (GetPackagingSizeTypeControlValue("chkFlashedCarton") ? "checked='checked'" : "") + " />" - person tvanfosson; 18.03.2010
comment
По-прежнему проверяется, даже если это неверно с этим изменением. Просто из любопытства я вставил какой-то мусорный текст между «проверено» и «abc» и «abc» относительно того, что должно произойти. Ничего не произошло. Он все еще возвращался проверенный, когда был ложным. Я предполагаю, что тогда это даже не доходит до этих точек ?? Однако он вызывает функцию, потому что я могу Response.Write возвращаемое значение, и оно ложно. - person d3020; 19.03.2010
comment
Как выглядит сгенерированный HTML? - person tvanfosson; 19.03.2010
comment
‹Input type = 'checkbox' id = 'chkFlashedCarton' name = 'chkFlashedCarton' disabled = 'disabled' value = 'true' checked = '' /› Это результат проверки, даже если возврат из вызова функции был Ложь. - person d3020; 19.03.2010
comment
Это похоже на то, что check все еще присутствует в теге, но я думаю, что после этого он полностью исчез из тега, если возвращаемое значение из вызова функции было False. - person d3020; 19.03.2010
comment
Я почти уверен, что если бы вы использовали мой последний образец, проверенного даже не было бы в теге. Он не добавляет checked='checked', если возвращаемое значение функции не истинно, иначе он просто добавляет пустую строку. - person tvanfosson; 19.03.2010
comment
В вашем последнем образце он возвращает это (все еще проверяется, когда возвращается false). ‹Input type = 'checkbox' id = 'chkFlashedCarton' name = 'chkFlashedCarton' disabled = 'disabled' value = 'true' checked = /› - person d3020; 19.03.2010
comment
Мне было бы любопытно, почему, но еще раз спасибо за то, что уделили время этому. У меня есть решение с использованием операторов if в функции, но было бы здорово использовать тот подход, о котором вы говорите, если бы он сработал. Спасибо еще раз. - person d3020; 20.03.2010
comment
Опубликуйте точный код, который вы в настоящее время используете для редактирования своего вопроса - я посмотрю, смогу ли я обновить его для работы с тернарным оператором. - person tvanfosson; 20.03.2010
comment
Я вижу, что он отключился ... позвольте мне попробовать еще раз здесь. Это вызов функции в моем теге ввода - + GetPackagingSizeTypeControlValue (chkFlashedCarton) + - person d3020; 20.03.2010