Выберите символы после индекса, чтобы выбрать другой элемент с такими же символами - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь получить символы после индекса, чтобы использовать их при выборе другого ввода с такими же последними символами. В настоящее время у меня появляется следующее сообщение об ошибке: thisObj1.indexOf is not a function для thisObj и thisObj1.

Я пытался использовать цикл for и i с селектором, однако это повлияло на все подобные элементы.

<input type="text" value="5" id="nosday"><br><br>
<input type="hidden" value="3" id="countrows"><br>
////////////////////////FIRST FORM/////////////////////////////
<br>
<form id="formaddi1" class="formadd1">

<label for="standardi1">Standard</label>
<input type="radio" name="packn1" id ="standardi1" class="pack1 standardc1 qr1" value="1050" checked><br><br>

<label for="equippedi1">Equipped</label>
<input type="radio" name="packn1" id ="equippedi1" class="pack1 equippedc1 qr1" value="0" ><br><br>

<label for="gpsi1">GPS</label>
<input type="checkbox" name="gpsn1" id ="gpsi1" value="20" class ="gpsc1 qr1"><br><br>

<label for="boosteri1">booster</label>
<input type="checkbox" name="boostern1" id ="boosteri1" value="20" class =" boosterc1 qr1"><br><br>

<label for="onetenti1">One tent</label>
<input type="radio" name="tentn1" id ="onetenti1" class="stent1 onetentc1 qr1" value="1350" disabled><br><br>

<label for="twotenti1">Two tents :</label>
<input type="radio" name="tentn1" id ="twotenti1" class="stent1 twotentc1 qr1" value="1450" disabled><br><br>
Daily :<span id="dailytotali1"> </span><br><br>
Total :<span id="lengthtotali1"> </span>
<br><br>
<br><input tyep="text" id="dailytoti1" name="pricefn11" value="">
<br><input tyep="text" id="lengthtoti1" name="pricefn21" value="">
<br><br><br>
</form>
////////////////////////SECOND FORM/////////////////////////////
<BR>
<form id="formaddi2" class="formadd2">
<label for="standardi2">Standard</label>
<input type="radio" name="packn2" id ="standardi2" class="quip2 standardc2 qr2" value="125" checked><br><br>

<label for="equippedi2">Equipped</label>
<input type="radio" name="packn2" id ="equippedi2" class="quip2 equippedc2 qr2" value="0" ><br><br>

<label for="gpsi2">GPS</label>
<input type="checkbox" name="gpsn2" id ="gpsi2" value="20" class ="gpsc2 qr2"><br><br>

<label for="boosteri2">booster</label>
<input type="checkbox" name="boostern2" id ="boosteri2" value="20" class ="boosterc2 qr2"><br><br>

<label for="onetenti2">One tent</label>
<input type="radio" name="tentn2" id ="onetenti2" class="stent2 onetentc2 qr2" value="1350" disabled><br><br>

<label for="twotenti2">Two tents :</label>
<input type="radio" name="tentn2" id ="twotenti2" class="stent2 twotentc2 qr2" value="1450" disabled><br><br>
Daily :<span id="dailytotali2"> </span><br><br>
Total :<span id="lengthtotali2"> </span><br><br>

<br><input tyep="text" id="dailytoti2" name="pricefn12" value="">
<br><input tyep="text" id="lengthtoti2" name="pricefn22" value="">
<br><br><br>
</form>
////////////////////////THIRD FORM/////////////////////////////
<form id="formaddi3" class="formadd3">
<br>
<label for="standardi3">Standard</label>
<input type="radio" name="packn3" id ="standardi3" class="quip3 standardc3 qr3" value="1050" checked><br><br>

<label for="equippedi3">Equipped</label>
<input type="radio" name="packn3" id ="equippedi3" class="quip3 equippedc3 qr3" value="0" ><br><br>

<label for="gpsi3">GPS</label>
<input type="checkbox" name="gpsn3" id ="gpsi3" value="20" class ="gpsc3 qr3"><br><br>

<label for="boosteri3">booster</label>
<input type="checkbox" name="boostern3" id ="boosteri3" value="20" class ="boosterc3 qr3"><br><br>

<label for="onetenti3">One tent</label>
<input type="radio" name="tentn3" id ="onetenti3" class="stent3 onetentc3 qr3" value="1350" disabled><br><br>

<label for="twotenti3">Two tents :</label>
<input type="radio" name="tentn3" id ="twotenti3" class="stent3 twotentc3 qr3" value="1450" disabled><br><br>
Daily :<span id="dailytotali3"> </span><br><br>
Total :<span id="lengthtotali3"> </span><br><br>

<br><input tyep="text" id="dailytoti3" name="pricefn13" value="">
<br><input tyep="text" id="lengthtoti3" name="pricefn23" value="">
</form>
function Calc() {
    //get the values of the selected options
      var counter = $("#countrows").val();
      let totals = [];
            for (i = 1; i <= counter; i++) {
      totals[i] = 0;
      $.each($('.qr' + i + ':checked'), function() {
        totals[i] += parseInt($(this).val());
      });
      console.log(totals[i]);
    $('#dailytotali' + i).text('R' + totals[i] + '/day');
    $('#lengthtotali' + i).text('R' + totals[i] * parseFloat($("#nosday").val()) + '/day');
    $('#dailytoti' + i).val(totals[i]);
    $('#lengthtoti' + i).val(totals[i] * parseFloat($("#nosday").val()));

      }

}       
Calc();

$("[class*=qr]").on("change", function(e) {
e.preventDefault();
Calc();

});

function Equip(thisOb1) 
    {

    var lastChar = thisOb1.substr(thisOb1.indexOf("c") + 1);
$('input.onetentc'+ lastChar).prop("disabled", false);
$('input.twotentc'+ lastChar).prop("disabled", false);
$('input.onetentc'+ lastChar).prop("checked", true);
$('input.standardc'+ lastChar).prop("checked", false);
    }
    function Standard(thisOb) 
    {
        var lastChar1 = thisOb.substr(thisOb.indexOf("i") + 1)
        $('input.onetentc'+ lastChar1).prop("checked", false);
    $('input.twotentc'+ lastChar1).prop("checked", false);
        $('input.onetentc'+ lastChar1).prop("disabled", true);
        $('input.twotentc'+ lastChar1).prop("disabled", true);
        }
$("[id*=standardi]").click(function() {
var thisid = $(this).attr('id');
Standard(thisid);
});
$("[id*=equippedi]").click(function() {
var thisid1 = $(this).attr('id');
Equip(thisid1);
});

Пример CLICK -> Standard, Disable & uncheck -> onetent & twotent. У меня есть пример здесь: https://jsfiddle.net/shiataz12/oj51vfpm/166/

Я пытаюсь передать имя класса или идентификатора функции, а затем выбрать символы после индекса, чтобы использовать его для выбора другого ввода в той же форме. Любые советы или предложения приветствуются.

1 Ответ

0 голосов
/ 02 июля 2019

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

Передано $(this); из функции click в function Standard () и function Equip(). создал переменную для $(this) для использования в присваивании переменной lastChar, которая предоставляет символ после Index. String() используется для преобразования объекта $(this) в строку и присвоения новой переменной thisstr. lastChar переменная, назначенная символу после индекса с помощью lastIndexOf, который находит последний индекс, соответствующий индексу в строке, и предоставляет любые символы после него.

var lastChar = thisstr1.substr(thisstr1.lastIndexOf('i') + 1);

Используется для поиска символов после ('i'), где i - последний символ в строке.

var thisstr = String(that); Строка, которая преобразует var that = $(this).attr('id'); из объекта в строку как `$ (this), используется для ссылки на элемент DOM, а не на конкретную строку в следующем примере:

$("#id").click(functon()
{
  var vas = $(this).val();
  var do = (".class").text(vas);
});

$(this) - это элемент DOM, то есть вход, div, span и т. Д. В целом. val () - это определение, чтобы найти значение этого элемента. Это удобно при использовании краткого кодирования и простой ссылки на рассматриваемый элемент и может использоваться в циклах, функциях, от одной функции к другой. и т.д.

Чтобы избежать проверки или снятия отметки; Флажки Я решил использовать радиокнопки, замаскированные под флажки, только потому, что они требовались для эстетики. console.log(); на самом деле не требуется для меня, но я оставил его там, чтобы проверить, все ли работает хорошо.

function Calc() {
  //get the values of the selected options
  var counter = $("#countrows").val();
  let totals = [];
  for (i = 1; i <= counter; i++) {
    totals[i] = 0;
    $.each($('.qr' + i + ':checked'), function() {
      totals[i] += parseInt($(this).val());
    });
    console.log(totals[i]);
    $('#dailytotali' + i).text('R' + totals[i] + '/day');
    $('#lengthtotali' + i).text('R' + totals[i] * parseFloat($("#nosday").val()) + '/day');
    $('#dailytoti' + i).val(totals[i]);
    $('#lengthtoti' + i).val(totals[i] * parseFloat($("#nosday").val()));

  }

}
Calc();

$("[class*=qr]").on("change", function(e) {
  e.preventDefault();
  Calc();

});

function Equip(thisid) {
  var that = $(thisid).attr('id');
  var thisstr1 = String(that);
  var lastChar = thisstr1.substr(thisstr1.lastIndexOf('i') + 1);
  console.log(that);
  console.log(thisstr1);
  console.log(lastChar);
  $('input.onetentc' + lastChar).prop("disabled", false);
  $('input.twotentc' + lastChar).prop("disabled", false);
  $('input.onetentc' + lastChar).prop("checked", true);
  $('input.standardc' + lastChar).prop("checked", false);
}

function Standard(thisid) {
  var that1 = $(thisid).attr('id');
  var thisstr = String(that1);
  var lastChar1 = thisstr.substr(thisstr.indexOf('i') + 1)
  console.log(that1);
  console.log(thisstr);
  console.log(lastChar1);
  $('input.onetentc' + lastChar1).prop("checked", false);
  $('input.twotentc' + lastChar1).prop("checked", false);
  $('input.onetentc' + lastChar1).prop("disabled", true);
  $('input.twotentc' + lastChar1).prop("disabled", true);
}
$("[id*=standardi]").click(function() {
  Standard($(this));
});
$("[id*=equippedi]").click(function() {
  Equip($(this));
});
input[type="radio"] {
  -webkit-appearance: checkbox;
  -moz-appearance: checkbox;
  -ms-appearance: checkbox;
  /* not currently supported */
  -o-appearance: checkbox;
  /* not currently supported */
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" value="5" id="nosday"><br><br>
<input type="hidden" value="3" id="countrows"><br> ////////////////////////FIRST FORM/////////////////////////////
<br>
<form id="formaddi1" class="formadd1">

  <label for="standardi1">Standard</label>
  <input type="radio" name="packn1" id="standardi1" class="pack1 standardc1 qr1" value="1050" checked><br><br>

  <label for="equippedi1">Equipped</label>
  <input type="radio" name="packn1" id="equippedi1" class="pack1 equippedc1 qr1" value="0"><br><br>

  <label for="gpsi1">GPS</label>
  <input type="checkbox" name="gpsn1" id="gpsi1" value="20" class="gpsc1 qr1"><br><br>

  <label for="boosteri1">booster</label>
  <input type="checkbox" name="boostern1" id="boosteri1" value="20" class=" boosterc1 qr1"><br><br>

  <label for="onetenti1">One tent</label>
  <input type="radio" name="tentn1" id="onetenti1" class="stent1 onetentc1 qr1" value="1350" disabled><br><br>

  <label for="twotenti1">Two tents :</label>
  <input type="radio" name="tentn1" id="twotenti1" class="stent1 twotentc1 qr1" value="1450" disabled><br><br> Daily :<span id="dailytotali1"> </span><br><br> Total :<span id="lengthtotali1"> </span>
  <br><br>
  <br><input tyep="text" id="dailytoti1" name="pricefn11" value="">
  <br><input tyep="text" id="lengthtoti1" name="pricefn21" value="">
  <br><br><br>
</form>
////////////////////////SECOND FORM/////////////////////////////
<BR>
<form id="formaddi2" class="formadd2">
  <label for="standardi2">Standard</label>
  <input type="radio" name="packn2" id="standardi2" class="quip2 standardc2 qr2" value="125" checked><br><br>

  <label for="equippedi2">Equipped</label>
  <input type="radio" name="packn2" id="equippedi2" class="quip2 equippedc2 qr2" value="0"><br><br>

  <label for="gpsi2">GPS</label>
  <input type="checkbox" name="gpsn2" id="gpsi2" value="20" class="gpsc2 qr2"><br><br>

  <label for="boosteri2">booster</label>
  <input type="checkbox" name="boostern2" id="boosteri2" value="20" class="boosterc2 qr2"><br><br>

  <label for="onetenti2">One tent</label>
  <input type="radio" name="tentn2" id="onetenti2" class="stent2 onetentc2 qr2" value="1350" disabled><br><br>

  <label for="twotenti2">Two tents :</label>
  <input type="radio" name="tentn2" id="twotenti2" class="stent2 twotentc2 qr2" value="1450" disabled><br><br> Daily :<span id="dailytotali2"> </span><br><br> Total :<span id="lengthtotali2"> </span><br><br>

  <br><input tyep="text" id="dailytoti2" name="pricefn12" value="">
  <br><input tyep="text" id="lengthtoti2" name="pricefn22" value="">
  <br><br><br>
</form>
////////////////////////THIRD FORM/////////////////////////////
<form id="formaddi3" class="formadd3">
  <br>
  <label for="standardi3">Standard</label>
  <input type="radio" name="packn3" id="standardi3" class="quip3 standardc3 qr3" value="1050" checked><br><br>

  <label for="equippedi3">Equipped</label>
  <input type="radio" name="packn3" id="equippedi3" class="quip3 equippedc3 qr3" value="0"><br><br>

  <label for="gpsi3">GPS</label>
  <input type="checkbox" name="gpsn3" id="gpsi3" value="20" class="gpsc3 qr3"><br><br>

  <label for="boosteri3">booster</label>
  <input type="checkbox" name="boostern3" id="boosteri3" value="20" class="boosterc3 qr3"><br><br>

  <label for="onetenti3">One tent</label>
  <input type="radio" name="tentn3" id="onetenti3" class="stent3 onetentc3 qr3" value="1350" disabled><br><br>

  <label for="twotenti3">Two tents :</label>
  <input type="radio" name="tentn3" id="twotenti3" class="stent3 twotentc3 qr3" value="1450" disabled><br><br> Daily :<span id="dailytotali3"> </span><br><br> Total :<span id="lengthtotali3"> </span><br><br>

  <br><input tyep="text" id="dailytoti3" name="pricefn13" value="">
  <br><input tyep="text" id="lengthtoti3" name="pricefn23" value="">
</form>
...