0

我在按钮内输入。单击输入时是否可以防止触发按钮单击事件?preventDefault()不起作用。

<button class="btn_size">
<input type="text" name="size_y" style="width:60px;" />
<font style="font-weight:normal;">x</font>
<input type="text" name="size_y" style="width:60px;" />
Set size
</button>

http://jsfiddle.net/XeYTJ/

同样的情况也发生在stopPropagation(). 它不会阻止它:

http://jsfiddle.net/XeYTJ/2/

几年前我也有类似的问题。我希望能够禁用单个手风琴按钮。我编写了一个能够在任何其他事件的顶部绑定事件的函数,它只是检查单击的按钮是否具有.disabled类。如果是,它只是做到了return false;。那行得通。但直到jQuery 1.8出现。对事件数据的访问发生了一些变化,它不再起作用。

这个问题似乎很简单,所以我知道我可能会得到很多-1选票。但是,请在投票前检查您是否能够解决问题。

4

1 回答 1

1

您可以分两步使其工作:

  1. 在输入中使用与选择器中相同的名称。您有两个输入name="size_y",但您使用的是选择器$('input[name="y_size"]')$('input[name="x_size"]'). 看到不同?

  2. 在输入之前在按钮上添加点击事件:

    $('.btn_size').button({icons: { primary: "ui-icon-arrow-4-diag" }}).click(function(){
        console.log('clicked');
    }); 
    
    $('input[name="size_x"]').click(function(e){
        console.log('x');
        e.stopPropagation();
    });
    $('input[name="size_y"]').click(function(e){
        console.log('y');
        e.stopPropagation();
    });
    

小提琴

如果这不起作用,您可以尝试更改<button><div>并使用.button()它来设置样式。

于 2013-08-22T17:17:04.840 回答