Jquery on change重置为0并显示警报

时间:2011-06-28 15:34:51

标签: jquery

我尝试将此代码用于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>

我的错误是什么?

8 个答案:

答案 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: 忽略我的回答,完全错了。对不起。