Изменение значения в input[text]
День добрый :)
Есть такой код:
jQuery(function($){
$(".number-item a").bind("click", function(){
var This = $(this),
inputNumber = +This.siblings("input").attr("value"),
inputNumberClass = This.attr("class");
if(inputNumberClass == "plus-number-item" && inputNumber >= 0){
This.siblings("input").attr("value", inputNumber + 1);
return false
} else if(inputNumberClass == "minus-number-item" && inputNumber <= 1){
return false
} else{
This.siblings("input").attr("value", inputNumber - 1);
return false
}
});
});
И есть: <a href="#" class="minus-number-item">-</a> <input type="text" value="1" /> <a href="#" class="plus-number-item">+</a> Код работает для value="1", если дергать + и -, но если вбить в input число, то к этому числу + и - не применяться. Что отвечает за числа напечатанные с клавиатуры в input и как это число изменять, если оно не относится к value? |
нужно не .attr("value") использовыать а .val()
|
Bravo,
может input type="number" и не мучатся?
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.number-item a{
text-decoration: none;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
jQuery(function($) {
$(".number-item").each(function(f, c) {
$(c).on("click", "a", function(e) {
var input = $("input", c)[0],
val = +input.value;
$(this).is(".plus-number-item") ? val++ : 1 < val && val--;
input.value = val;
e.preventDefault()
})
})
});
</script>
</head>
<body>
<div class="number-item">
<a href="#" class="minus-number-item">-</a>
<input type="text" value="1" />
<a href="#" class="plus-number-item">+</a></div>
</body>
</html>
|
<style>
.podbor{position: relative;}
.podbor>input{
padding: 2px 2px 1px 4px;
font-size:30px;
width: 70px;
height: 40px;
float: left;
border: 1px solid #666;
border-radius: 4px 0 0 4px;
}
.podbor>span{
display: block;
font-size: 18px;
position:absolute;
left: 58px;
margin: 0;
padding: 2px;
line-height:14px;
width: 14px;
border: 1px solid #666;
background-color: #E4E4E4;
text-align: center;
cursor: pointer;
}
.podbor>.plus{border-bottom: none; height: 16px;}
.podbor>.minus{top: 20px; height: 14px;}
.podbor>span:hover{background-color: #999;}
</style>
<body>
<div class="podbor">
<input type="text" value="1"/>
<span class="plus">+</span>
<span class="minus">-</span>
</div>
</body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
jQuery(function(a){
a('div.podbor').on('click', 'span', function () {
var inp = a('input' , this.parentNode),
val = +inp.val();
inp.val(val += this.className == 'minus' ? val>1 ? -1: 0: 1);
});
});
</script>
еще пример :) |
Цитата:
Всем спасибо за ответы и оптимизацию решения :) |
| Часовой пояс GMT +3, время: 00:45. |