Заставить невидимые текстовые поля иметь значение 0 или

Я знаю, что это немного неуклюже, но я так близок к решению, что мне пришлось опубликовать это.

У меня есть форма с двумя флажками, которые переключают видимость соответствующих диапазонов. num_bw и num_c — это промежутки, которые содержат поля ввода, в которые пользователь указывает, сколько из двух типов продуктов он хочет. Однако я беспокоюсь, что пользователь может поместить число в текстовое поле, которое временно видимо (скажем, первое, в диапазоне num_bw), но затем передумает и снимет этот флажок и поместит число в поле вместо этого в диапазоне num_c.

Благодаря тому, как работает этот код, поле num_bw теперь будет невидимым, но оно может по-прежнему содержать число! Если он нажмет кнопку «Отправить», пользователь может быть удивлен, увидев, что эти 3 черно-белых продукта ему не нужны. больше хочет все еще в его корзине! Упс!

Поэтому мне нужно проверить, находятся ли какие-либо из этих двух текстовых полей (их имена — orderquantitybw и orderquantityc, я также могу добавить идентификаторы, если мне нужно) в диапазоне, который теперь невидим (#num_bw и #num_c), и если они , чтобы свести их значение к нулю, ноль, пшик, "", все, что не смутит программное обеспечение корзины покупок (это не мой отдел, как это работает, для меня немного непрозрачно).

Это в голове, просто делает эти спаны невидимыми в начале:

    $(document).ready(function() {
    $('#num_bw').hide();
    $('#num_c').hide();
    });

Это сразу после рассматриваемой формы, оно делает промежутки видимыми или невидимыми, когда пользователь нажимает на флажки:

$('#show_c').click(function(){
$('#num_c').toggle();
});
$('#show_bw').click(function(){
$('#num_bw').toggle();
});

И я хочу добавить функцию в конец. Я остановился, едва не написав его. Любая помощь?

    $('#submit_btn').click(function(){

    /*Insert script to turn form box's values to "0" if 
    they are in an invisible span*/

    )};

person Baz    schedule 21.07.2011    source источник


Ответы (2)


Попробуй это

$('#submit_btn').click(function(){

    $("#num_bw, #num_c").each(function(){
       if(!$(this).is("visible")){
         $(this).find("input").val("0")
       }
    });

)};
person ShankarSangoli    schedule 21.07.2011
comment
Хм. Я думаю. Разве не должно быть if(!$(this).is(invisible)){ вместо этого? - person Baz; 21.07.2011
comment
В ваших комментариях говорится: /* Вставьте скрипт, чтобы преобразовать значения поля формы в 0, если они находятся в невидимом диапазоне */, поэтому if(!$(this).is(visible)) будет проверять диапазон, который не виден. - person ShankarSangoli; 21.07.2011
comment
это немного сбивает меня с толку. Мне нужно многому научиться, но я верю, что ты прав. Спасибо. - person Baz; 21.07.2011

$("#num_bw:hidden").val(0)
$("#num_c:hidden").val(0)

должен сделать это. Или вы можете сделать что-то вроде этого:

$(".quantityTextBox:hidden").val(0)

для текстовых полей с классом "quantityTextBox"

person Joseph Marikle    schedule 21.07.2011