Як праверыць значэння некалькіх элементаў (апісваюцца іх ідэнтыфікатары) з дапамогай JQuery?

if (standardFlag == "ASCE")
{
  if (document.querySelectorAll('#Ss_param, #S1_param, #T0_param, #TL_param').value == "" ){
    alert("Please fill out all the required fields before generating your design spectrum");
  }
  else if (document.getElementById('Ss_param').value < document.getElementById('S1_param').value {
    alert("S1 must be less than Ss!");
  }

Я спрабую праверыць, ці маюць альбо Ss_param, S1_param, T0_param або TL_param ўводу ідэнтыфікатараў любое значэнне. Другая ўмова перадае сваё ўласнае справа, якое, як я ведаю, што ўсе ўмоўна не пашкоджаны, але першае ўмова не праходзіць, калі ён павінен. Як гэта выправіць?

0
Вы не карыстаецеся JQuery.
дададзена аўтар SLaks, крыніца
Гэта элемент <�я> масіў (на самай справе NodeList). Вы не можаце рабіць выгляд, што адзін аб'ект.
дададзена аўтар SLaks, крыніца
Праверце кожны элемент у сваю чаргу. Вы не можаце атрымаць адно значэнне з некалькіх элементаў.
дададзена аўтар Blazemonger, крыніца
Ваша паведамленне пра памылку і пытанне не супадаюць. Вы хочаце, каб пераканацца, што <�я> усе </я> неабходныя палі запаўняюцца ці вы хочаце, каб пераканацца, што <�я> адзін з абавязковых палёў, якія запаўняюцца?
дададзена аўтар Andrew Whitaker, крыніца

8 адказы

<�Моцны> Перш за ўсё: Вы павінны проста паглядзець у бібліятэку праверкі .

Калі вы хочаце, каб усё-ткі падысці да яго такім чынам, я хацеў бы паглядзець у фільтр метад jQuery ст.

Гэта верне толькі элементы, якія маюць значэнне:

var $elementsWithValue = $('#Ss_param, #S1_param, #T0_param, #TL_param').filter(function(){ 
    return this.value.length > 0 
});

Тады вы можаце проста праверыць даўжыню $ elementsWithValue.

2
дададзена

You can use filter if your id's always end's with _param

if ($('[id$="_param"]').filter(function(){
     return $(this).val() === "";  
   }).length > 0){
alert("Please fill out all the required fields before generating your design spectrum");
}
1
дададзена
Я не думаю, што код будзе працаваць у рэальным жыцці, так як ён, верагодна, мае некаторыя нетребуемые поля з _param ідэнтыфікатарамі.
дададзена аўтар Blazemonger, крыніца

You can use filter if your id's always end's with _param

if ($('[id$="_param"]').filter(function(){
     return $(this).val() === "";  
   }).length > 0){
alert("Please fill out all the required fields before generating your design spectrum");
}
1
дададзена
Я не думаю, што код будзе працаваць у рэальным жыцці, так як ён, верагодна, мае некаторыя нетребуемые поля з _param ідэнтыфікатарамі.
дададзена аўтар Blazemonger, крыніца

You can use filter if your id's always end's with _param

if ($('[id$="_param"]').filter(function(){
     return $(this).val() === "";  
   }).length > 0){
alert("Please fill out all the required fields before generating your design spectrum");
}
1
дададзена
Я не думаю, што код будзе працаваць у рэальным жыцці, так як ён, верагодна, мае некаторыя нетребуемые поля з _param ідэнтыфікатарамі.
дададзена аўтар Blazemonger, крыніца

Вы не можаце атрымаць адно значэнне з некалькіх элементаў. Проста параўнайце іх па адным за раз:

if (document.getElementById('Ss_param').value === ""
    || document.getElementById('S1_param').value === ""
    || document.getElementById('T0_param').value === ""
    || document.getElementById('TL_param').value === "" ){

(І праверце кансоль JavaScript для сінтаксічных памылак. Ваш інакш, калі тэст адсутнічае зачыняе дужку.)

1
дададзена

Пасля перафарматавання ваш код больш чытэльным, здаецца вам не хапае канцоўкі блізка дужка } , гэта памылка друку ў гэтым пытанні, ці памылка ў кодзе?

Акрамя таго, ваша другая ўмова адсутнічае зачыняе дужка ) . Вы заўважылі памылкі JavaScript, калі вы адкрываеце кансоль у браўзэры, які вы тэстуеце на?

Пасля таго, як вы вырашыць гэтую праблему, вы павінны ведаць, што вы карыстаецеся убудаваныя функцыі браўзэра. Пры выкарыстанні querySelectorAll вы атрымліваеце масіў аб'ектаў назад. Выклік .value на іх, верагодна, таксама выклікае яваскрипт памылку. Вы павінны перабраць кожнае значэнне або выкарыстоўваць jQuery (які, магчыма, дадуць вам больш рамонтапрыдатнасць рашэння).

Выкарыстанне JQuery, гэта дасць вам жаданы вынік:

if (standardFlag == "ASCE")
{
  var error = false;
  $.each(["Ss_param", "S1_param", "T0_param", "TL_param"], function(){
    if ($("#" + this).val() == ""){
      error = true;
      alert("Please fill out all the required fields before generating your design spectrum");
    }
  })

  if(!error && $("Ss_param").val() < $("#S1_param").val())
    alert("S1 must be less than Ss!");
  }
}
1
дададзена

Пасля перафарматавання ваш код больш чытэльным, здаецца вам не хапае канцоўкі блізка дужка } , гэта памылка друку ў гэтым пытанні, ці памылка ў кодзе?

Акрамя таго, ваша другая ўмова адсутнічае зачыняе дужка ) . Вы заўважылі памылкі JavaScript, калі вы адкрываеце кансоль у браўзэры, які вы тэстуеце на?

Пасля таго, як вы вырашыць гэтую праблему, вы павінны ведаць, што вы карыстаецеся убудаваныя функцыі браўзэра. Пры выкарыстанні querySelectorAll вы атрымліваеце масіў аб'ектаў назад. Выклік .value на іх, верагодна, таксама выклікае яваскрипт памылку. Вы павінны перабраць кожнае значэнне або выкарыстоўваць jQuery (які, магчыма, дадуць вам больш рамонтапрыдатнасць рашэння).

Выкарыстанне JQuery, гэта дасць вам жаданы вынік:

if (standardFlag == "ASCE")
{
  var error = false;
  $.each(["Ss_param", "S1_param", "T0_param", "TL_param"], function(){
    if ($("#" + this).val() == ""){
      error = true;
      alert("Please fill out all the required fields before generating your design spectrum");
    }
  })

  if(!error && $("Ss_param").val() < $("#S1_param").val())
    alert("S1 must be less than Ss!");
  }
}
1
дададзена

Пасля перафарматавання ваш код больш чытэльным, здаецца вам не хапае канцоўкі блізка дужка } , гэта памылка друку ў гэтым пытанні, ці памылка ў кодзе?

Акрамя таго, ваша другая ўмова адсутнічае зачыняе дужка ) . Вы заўважылі памылкі JavaScript, калі вы адкрываеце кансоль у браўзэры, які вы тэстуеце на?

Пасля таго, як вы вырашыць гэтую праблему, вы павінны ведаць, што вы карыстаецеся убудаваныя функцыі браўзэра. Пры выкарыстанні querySelectorAll вы атрымліваеце масіў аб'ектаў назад. Выклік .value на іх, верагодна, таксама выклікае яваскрипт памылку. Вы павінны перабраць кожнае значэнне або выкарыстоўваць jQuery (які, магчыма, дадуць вам больш рамонтапрыдатнасць рашэння).

Выкарыстанне JQuery, гэта дасць вам жаданы вынік:

if (standardFlag == "ASCE")
{
  var error = false;
  $.each(["Ss_param", "S1_param", "T0_param", "TL_param"], function(){
    if ($("#" + this).val() == ""){
      error = true;
      alert("Please fill out all the required fields before generating your design spectrum");
    }
  })

  if(!error && $("Ss_param").val() < $("#S1_param").val())
    alert("S1 must be less than Ss!");
  }
}
1
дададзена