Как предупредить один раз в цикле JavaScript - PullRequest
1 голос
/ 30 августа 2011
Код

: в показанном ниже коде сообщение о предупреждении продолжает зацикливаться до конца оператора. Мне нужно, чтобы оператор предупреждения предупреждал только один раз . Как этого добиться?

Здесь проверяется вывод флажка, если он не выбран, он показывает неопределенное

 for(j=1;j<=numOflimit;j++)
    {
      var select = $("input[name=select+j]:checked").val();
        //alert (select);
        //$check='undefined';


        if(select==undefined)

        {
            alert ("Please select atleast one product");
        }
        else
        {
            var postData    =   $("form").serialize();//"product_name="+product_name+"&barcode="+barcode+"&Quantity"+Quantity;
            $.ajax
            ({
               type: 'POST',
                url: 'http://localhost/example/index.php/castoutput',                      
                data: postData,
                success: function(html) {
                    // alert(html);
                    $('#cast2').html(html); 
                }
         });
        }
   }

Ответы [ 6 ]

6 голосов
/ 30 августа 2011

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

if (showAlert==true)
{
   alert ("Please select atleast one product");
   showAlert = false;
}
2 голосов
/ 30 августа 2011

Нет абсолютно никаких причин, по которым можно циклически перебирать входные элементы, чтобы определить, проверен ли какой-либо из них.Поскольку вы уже используете селектор: checked, просто проверьте длину соответствующего набора элементов - это очень просто:

var $checked = $("input[type='checkbox']:checked");

// If none of the checkboxes are checked, alert to the user
if ( !$checked.length ) {

    alert("Please select atleast one product");

} else {

    // do ajax post stuff here.

}
2 голосов
/ 30 августа 2011

Здесь вы используете строку вместо конкатенации:

$("input[name=select+j]:checked").val();

Вам нужно поместить j вне цитат:

$("input[name=select"+j+"]:checked").val();

В противном случае оно всегда не определено.

Просто любопытно, кстати, зачем вам все-таки делать петли здесь?

0 голосов
/ 30 августа 2011

вы пытались просто заставить его выйти из цикла for в другую функцию, которая выдает ошибку, если она равна undefined, поскольку похоже, что вы просто пытаетесь отправить форму.Так что просто заставьте его выйти из undefined для функции, которая выдает предупреждение, говорящее что угодно.

0 голосов
/ 30 августа 2011

Насколько я могу судить, вы не хотите делать оператор else, поэтому бесполезно запускать цикл for.Просто используйте:

if(select==undefined)
        {
            alert ("Please select atleast one product");
            j = numOflimit+1;
        }
0 голосов
/ 30 августа 2011

попробуйте это

if(typeof(select)=='undefined')

, и если вам нужно будет один раз предупредить - используйте ваш j counter

if (j==1) {alert('')}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...