Подскажите с кодом
Всем доброго дня!
Есть код который плюсует/отнимает цифры в инпуте.
var wrapper = document.querySelector('wr');
var countInput = document.getElementById('count');
var butM = document.getElementById('bminus');
var butP = document.getElementById('bplus');
var units = countInput.value.replace(/\d/g, '');
butP.onclick = function(){
countInput.value = parseInt(countInput.value)+1+units;
};
butM.onclick = function(){
if(parseInt(countInput.value) > 1) {
countInput.value = parseInt(countInput.value)-1+units;
}
};
Вот html
<div class="wr">
<div>
<span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
<span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
<span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
<span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
</div>
</div>
демо http://jsfiddle.net/ump6oL6y/13/ Проблема в том что, все это работает только на первом импуте, а на остальных нет, как бы поправить? |
А не проще сгенерить эти элементы?
<html>
<head>
<meta charset="windows-1251" />
<style>
#wr {
margin: 50px;
position: relative;
border: 2px solid #06c106;
padding: 5px 10px;
width: 130px;
overflow: hidden;
}
#wr input {
display: block;
padding: 8px;
width: 50px;
text-align: center;
border: 2px solid #c00;
outline: none;
float: left;
}
.minus,
.plus {
float: left;
display: block;
font-size: 26px;
padding: 5px 8px;
font-weight: bolder;
cursor: pointer;
color: #d00;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
</style>
</head>
<body>
<div id="wr"></div>
<script>
create=function(){
var minus=document.createElement("span")
minus.className="minus"
minus.innerHTML="-"
minus.onclick=function(){var iv=input.value; input.value=parseInt(iv)==0? iv : iv.replace(/\d+/, function(n){return +n-1})}
wr.appendChild(minus)
var input=document.createElement("input")
input.value="1 шт"
wr.appendChild(input)
var plus=document.createElement("span")
plus.innerHTML="+"
plus.className="plus"
plus.onclick=function(){input.value=input.value.replace(/\d+/, function(n){return +n+1})}
wr.appendChild(plus)
}
create()
create()
create()
create()
</script>
</body>
</html>
|
нет, список генерируется php кодом из базы, там их много, поэтому надо чтобы существующие обрабатывались. а так не получается?
|
<html>
<head>
<meta charset="windows-1251" />
<style>
.wr {
margin: 50px;
position: relative;
border: 2px solid #06c106;
padding: 5px 10px;
width: 130px;
overflow: hidden;
}
.wr input {
display: block;
padding: 8px;
width: 50px;
text-align: center;
border: 2px solid #c00;
outline: none;
float: left;
}
#bminus,
#bplus {
float: left;
display: block;
font-size: 26px;
padding: 5px 8px;
font-weight: bolder;
cursor: pointer;
color: #d00;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
</style>
</head>
<body>
<div class="wr">
<div>
<span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
<span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
<span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
<span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
</div>
</div>
<script>
get=function(s){return document.querySelector(".wr").querySelectorAll(s)}
minuses=get("#bminus")
pluses=get("#bplus")
inputs=get("#count")
setMinus=function(el){return function(){
var iv=el.value; el.value=parseInt(iv)==0? iv : iv.replace(/\d+/, function(n){return +n-1})
}}
setPlus=function(el){return function(){
el.value=el.value.replace(/\d+/, function(n){return +n+1})
}}
for(var i=0; i<minuses.length; i++){
minuses[i].onclick=setMinus(inputs[i])
pluses[i].onclick=setPlus(inputs[i])
}
</script>
</body>
</html>
|
| Часовой пояс GMT +3, время: 04:57. |