我尝试将此代码用于3个输入字段,但它仅适用于第一个:
<form>
<p><input id="qty" type="text" maxlength="1" /></p>
<p><input id="qty" name="text" type="text" /></p>
<p><input id="qty" name="text2" type="text" /></p>
</form>
<script type="text/javascript">
$("#qty").change(function(e) {
if(this.value != '3' && this.value != '6' && this.value != '9') {
this.value = 0;
alert('You can buy only 3, 6, or 9 pieces fromn this product');
} });
</script>
我的错误是什么?
答案 0 :(得分:2)
您不能使用相同ID的3件事尝试使用类:
<form>
<p><input class="qty" type="text" maxlength="1" /></p>
<p><input class="qty" name="text" type="text" /></p>
<p><input class="qty" name="text2" type="text" /></p>
</form>
<script type="text/javascript">
$(".qty").change(function(e) {
if(this.value != '3' && this.value != '6' && this.value != '9') {
this.value = 0;
alert('You can buy only 3, 6, or 9 pieces fromn this product');
} });
</script>
答案 1 :(得分:1)
您不能拥有多个具有相同ID的元素。
改为使用类名。
答案 2 :(得分:1)
它仅适用于第一个,因为您将事件连接到ID,并多次使用相同的ID。 ID 只能在给定页面上使用一次才能使用。
在jQuery中引用元素ID只会匹配DOM中的第一个匹配项 - 这就是它们的工作方式。 改为使用课程。
答案 3 :(得分:1)
您的问题是您使用id
属性。
id
是唯一的。因此,页面上只有一个元素可以具有标识qty
。
使用class
代替,然后这三个人都可以class='qty'
。
并将其更改为$('this')
答案 4 :(得分:1)
尝试为所有文本框提供唯一的ID。
答案 5 :(得分:0)
您不能拥有多个具有相同ID的元素。改为使用一个类。
还在文档就绪事件中嵌入了更改事件。
$(function(){
$("input:text.myclass").change(function(e){
if(this.value != '3' && this.value != '6' && this.value != '9') {
this.value = 0;
alert('You can buy only 3, 6, or 9 pieces fromn this product');
}
});
});
答案 6 :(得分:0)
ID属性是元素的唯一标识符,您不能在页面中包含重复项。因此,将您的ID更改为类名,您将会很高兴:
<p><input class="qty" type="text" maxlength="1" /></p>
<p><input class="qty" name="text" type="text" /></p>
<p><input class="qty" name="text2" type="text" /></p>
此外,当你在jQuery上下文中处理它时,你必须通过jQuery包装器引用该元素。 this
变为$(this)
,value
属性变为val()
函数调用。
更改为:
$(".qty").change(function(e) {
var value = $(this).val();
if(value != '3' && value != '6' && value != '9') {
$(this).val(0);
alert('You can buy only 3, 6, or 9 pieces fromn this product');
}
});
答案 7 :(得分:-1)
我不确定这是否是解决方案,但在jQuery中你必须使用$(this)
而不是this
。
然后,您还必须使用.val()
代替value
。
所以你必须使用这样的东西:
$(this).val()
要获取字段的值,要设置值,请使用:
$(this).val('new value')
修改强> 添加代码后: 就像其他人说的那样,你不能多次使用id。
编辑2: 忽略我的回答,完全错了。对不起。