标签: javascript-events

如何忽略第一个事件并跳到第二个?

我有一个表行,在表格行的任何地方都有鼠标点击附加的Javascript操作:

<tr onmousedown="someAction(this)">
    <td>cell 1</td>
    <td>cell 2</td>
    <td><a href="page2.html">cell 3</a></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

如果用户点击该行中的任何位置,我希望遵循Javascript操作someAction(this).但是,如果用户单击指向page2的链接,那么我希望忽略该操作并遵循链接.

不幸的是,首先会观察到该动作,这恰好会使链接文本的位置移动到足以使点击被删除.换句话说,在这种情况下,用户实际上无法点击链接并转到第2页.

如何禁用链接点击的mousedown操作?

谢谢!

更新: 基于答案,我最终在HTML的末尾包含了以下JavaScript,它按照建议注册了一个停止传播的事件处理程序,如下所示:

...
<script type="text/javascript" language="javascript">
//<![CDATA[
function stopEvent(ev) {
    ev.stopPropagation();
}
var links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
    links[i].addEventListener("onmousedown", stopEvent, false);
}
//]]>
</html>
Run Code Online (Sandbox Code Playgroud)

这可能很容易被包含在文档的onload事件中,但CDATA部分已经因其他原因而被要求,所以我在这里添加了我需要的内容.

感谢所有的帮助和好建议!:)

javascript javascript-events

3
推荐指数
1
解决办法
7308
查看次数

如何在单击一个复选框时禁用其他复选框?

我有一组同名的复选框,我需要的是当我点击其中任何一个时,其他复选框必须被禁用.我应该如何应用javascript?

<input type="checkbox" name="finallevelusers[]" value="1"/>
<input type="checkbox" name="finallevelusers[]" value="1"/>
<input type="checkbox" name="finallevelusers[]" value="1"/>
<input type="checkbox" name="finallevelusers[]" value="1"/>
Run Code Online (Sandbox Code Playgroud)

请帮忙...

javascript checkbox javascript-events

3
推荐指数
1
解决办法
3万
查看次数

Firefox中的事件问题

我在Firefox中访问"事件"时遇到问题.以下代码在Chrome中运行良好,但在Firefox中我收到"事件未定义"错误.

<tr onclick="rowSelected('thisRowType')">
  ... row content ...
</tr>

<script type="text/javascript">
    function rowSelected(type) {
        var eventRow = event.currentTarget; // here I get the error
    }
</script>
Run Code Online (Sandbox Code Playgroud)

据我所知,Firefox没有找到任何名为event的变量,但是我还没有找到除了'event'以外的任何东西也应该在Firefox中定义.

那么我怎样才能在Firefox中访问当前事件,或者重新设计应该如何?请注意,我有不同的行为'type'提供不同的值.

javascript javascript-events

3
推荐指数
1
解决办法
8563
查看次数

OOP javascript - 无法在页面加载时分配onclick事件处理程序

所以我正在尝试使用javascript进行自定义标签系统.但是,为了重用我想用OOP风格编写的代码.这就是我到目前为止:

function Tabs()
{

    this.tabArray = new Array(arguments.length);
    this.tabArrayC = new Array(arguments.length);

    for(i=0;i<arguments.length;i++)
    {
        this.tabArray[i] = arguments[i];
        this.tabArrayC[i] = arguments[i]+'_content';
    }

    this.setClickable = setClickable;

    function setClickable()
    {   

        for(i=0;i<this.tabArray.length;i++)
        {

                document.getElementById(this.tabArray[i]).onclick = function()
                {

                    alert(this.tabArray[i]);

                }

        }

    }

}

function init()
{
    tab = new Tabs('tab1','tab2','tab3','tab4');
    tab.setClickable();
}

window.onload = init();
Run Code Online (Sandbox Code Playgroud)

现在这是交易.我想将onclick事件处理程序分配给在Tabs'类'构造函数中传递的每个选项卡.所以稍后在代码中我写了类似的东西:

<div id="tab1">Tab1</div>
<div id="tab2">Tab2</div>
<div id="tab3">Tab3</div>
<div id="tab4">Tab4</div>
Run Code Online (Sandbox Code Playgroud)

之前设置的代码:

document.getElementById(this.tabArray[i]).onclick = function()
{

                    alert(this.tabArray[i]);

}
Run Code Online (Sandbox Code Playgroud)

......将被执行.我希望我解释得那么好.有任何想法吗?

javascript javascript-events

3
推荐指数
1
解决办法
1046
查看次数

javascript获取外部父ID ID

我有一个看起来像下面的结构,我正在尝试获取id foo.如果我们从中冒泡,它是唯一 DIV的id onclick func(),这意味着不会有其他内部包含id的DIVfoo.但是,里面可能有其他标签foo包含id(例如bye, hello).

没有使用框架.

<div id="bar"></div>
<div id="foo">
    <p><p>
    <div class="bye">
        <input id="bye" type="text" value="test" />  
        <input id="hello" type="text" value="test" />
        <table>
            <tr><td onclick="func(event)">1</td></tr>
            <tr><td onclick="func(event)">2</td></tr>
        </table>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

javascript parent-child javascript-events

3
推荐指数
1
解决办法
2万
查看次数

JQuery Mobile没有刷新按钮样式

当我尝试使用如下代码在JQuery中创建一个元素时:

$('#grid').append('<div id="gridElement'+counter+'" class="ui-block-'+rowLetter(counter)+'"></div>');
$('#gridElement'+counter).append('<div id="gridContent'+counter+'" data-inline="true"></div>');
$('#gridContent'+counter).append('<a id="button'+counter+'" href="#" data-role="button"></a>');
$('#button'+counter).html('someButtonText');
Run Code Online (Sandbox Code Playgroud)

正确添加元素,但不执行JQuery Mobile样式.这种方式很有意义,我知道库一加载就会对DOM做一些事情,但我无法找到一种方法来实现命令.显然我需要指示JQuery Mobile库重建页面,但对于我的生活,我一般都找不到任何可以做到的事情.我已经设法找到几个关于这是选择框和列表的问题的帖子,但一般,网格或按钮没有任何内容.到目前为止这是否可能?它仍处于alpha状态,所以可能不是.

html javascript mobile jquery javascript-events

3
推荐指数
2
解决办法
6375
查看次数

JavaScript keyCode - 使用外部键盘布局单击了哪个键

无法找到解决我认为是一个简单问题的方法.

我var a = evt.keyCode;用来确定点击了哪个键.

问题是我得到的值是被点击的键的ASCII码而不是被点击的真实字符.

例如,如果用户正在使用法语键盘,则单击该7键é,因此不是获取ASCII代码é,而是获得55,这是ASCII代码7.

javascript javascript-events

3
推荐指数
1
解决办法
1444
查看次数

阻止执行回调直到输入停止

如果没有按下任何键,则触发AJAX调用的计时器.如果按下某个键,则中止最后一个计时器并添加一个新计时器.这就是我想做但却未能成功的事情.这是我的代码:

 var t;
 input.onkeyup = function(){
    $('.confirmText').html('Checking...');
    var timeStampObj = new Date()
    var timeStamp = timeStampObj.getTime();
    var oldTimeStamp = $(this).attr('timeStamp');//I store a timeStamp in the element
    if(timeStamp < 500 + oldTimeStamp){
        $(this).attr('timeStamp', timeStamp);
        clearTimeout(t);
    }
    t = setTimeout(function(){
        $.ajax({
            url: 'serverScripts/settings/checkEmailAvailability.php',
            data: 'email='+email,
            success: function(text){

           if(text == 'available'){
                $('.confirmText').html('Available!');
           }else{
                $('.confirmText').html('Occupied!');
               }
            }
        });
    }, 500);//Half a second
    $(this).attr('timeStamp', timeStamp);
}
Run Code Online (Sandbox Code Playgroud)

javascript timer javascript-events

3
推荐指数
1
解决办法
697
查看次数

使用JQuery选择Element By Content

我目前正在构建一个需要通过其内容识别元素的应用程序.通常我会使用元素的ID来识别它,但在这种情况下,由于内容是用户生成的,因此不可能.

我有一个PHP脚本输出一些内容,其中一部分是用户输入的.例如:

<!-- elementid1 -->
This is user generated text. Lorem ipsum...
Run Code Online (Sandbox Code Playgroud)

我需要能够识别此元素并在点击时触发事件.一旦点击发生,我应该能够轻松地从内容中解析ID(elementid1).

但是,这些元素并不总是DIV.有时它们是H1到H6等.我将如何检测这些事件

要么

或者,我可以遍历所有元素(我不知道该怎么做),使用ID设置自定义属性,然后为属性等于某事的元素创建JQuery事件.如果有人知道如何遍历每个DOM元素(最好只有孩子,因为父母也会有子女的内容......),那么这也可行.

一张纸条:

通常我会使用contains()选择器,但由于这个ID是注释而不是文本,所以它似乎不起作用.

javascript jquery javascript-events

3
推荐指数
1
解决办法
1091
查看次数

当它失去焦点时如何隐藏div?

基本上我正在尝试实现一个登录,例如新推特的登录.当您单击登录时,会弹出包含字段的div.现在,当我点击div之外的任何地方(div失去焦点)时,div应该消失.

我已经尝试过如何模糊div元素中提到的技术?

代码如下

$("body").click(function(evt) {

            if (evt.target.id !== 'loginDialog') {
                $("#loginDialog").hide();
            }
        });
Run Code Online (Sandbox Code Playgroud)

麻烦就是target.id不会等于loginDialog,即使我点击某个地方有一个loginDialog在一个子div中说.

所以上面是一个很好的方向,但解决方案是不完整的.

实现这一目标的最佳方法是什么?

jquery javascript-events

3
推荐指数
1
解决办法
7305
查看次数