Ссылка для ответа и объяснения: Выберите символы после индекса, чтобы выбрать другой элемент с такими же символами
Код ниже:
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>
После нескольких часов исследований я нашел решение своей проблемы, извлекая информацию из более чем 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();
мне на самом деле не требуется, но я оставил его там, чтобы проверить, все ли работает хорошо.