标签: javascript-events

表单重置按钮是否触发了选择元素onChange事件?

我有一个表单,其中包含一些附加了onChange事件的select元素.即使有人点击表单重置按钮,我也希望该事件能够触发.

我的问题是:重置表单是否会触发选择元素onChange事件?

这是jQuery中的一个简单示例

<script type="text/javascript">
    $('.myselect').change(function() {
        // do something on change
    });
</script>

<form action="/" method="post">
    <select class="myselect" name="select1">
        <option value="1">First</option>
        <option value="2">Second</option>
    </select>
    <select class="myselect" name="select2">
        <option value="1">First</option>
        <option value="2">Second</option>
    </select>
    <!-- When this is clicked I would like it fire the change event -->
    <input type="reset" value="Reset" /> 
    <input type="submit" value="Save" />
</form>
Run Code Online (Sandbox Code Playgroud)

谢谢!

onchange javascript-events reset

8
推荐指数
2
解决办法
8756
查看次数

在Javascript中捕获表单提交的事件是什么?

这里有几个问题:

  • 我想知道在表单提交时使用什么事件来执行一些javascript(进行一些验证)?
  • 完成验证后,如何在javascript中提交表单?

干杯...

javascript validation javascript-events

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

js:如何在按键上获得LOCALIZED字符?

我需要在按键事件上获得本地化字符.例如:在捷克键盘上我需要得到不是5个字符(键码53)(参见捷克键盘布局).有没有其他方法来获得角色,不使用文本输入和阅读价值?换句话说,有什么方法可以从事件对象中获取关于当前用户键盘布局的字符?


(添加示例代码)

<html>
<body>
<script language="JavaScript">
function onLoad() {
    console.log(document.getElementById("test"));
    document.getElementById("test").onkeydown = function(event) {
                console.log("Code: "+event.keyCode+"; Key: "+String.fromCharCode(event.keyCode));
        }
}
</script>
<body onLoad="onLoad();">
    <input id="test">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

(在线示例)

当您尝试此代码并按下ř-key时,您将在Firebug控制台中看到"代码:53;密钥:5".我需要得到"ř"而不是"5".

我认为这个"问题"出现在所有非英语键盘上.

javascript localization keypress javascript-events keyboard-layout

8
推荐指数
1
解决办法
9587
查看次数

使用Web Workers(垃圾收集器)可能发生内存泄漏

我有一个应用程序,在按钮单击后调用web worker.计算将移至工作人员以缓解UI并使其在进行计算时响应用户操作.

一切顺利,大约0.8-1.5秒之后工人发出回应.在worker.onmessage中,我执行所有需要的DOM操作.但是在此GC出现之后,根据CPU的不同,实际上会阻止UI 2秒或更长时间.这真让我感到困惑,因为UI阻塞是我想要阻止的.

以下是时间轴/内存控制台选项卡的屏幕截图:http://i.imgur.com/zUoHa.jpg

正如您所看到的,GC事件恰好在所有DOM操作之后发生.实际上只有一个重绘事件(使用DocumentFragment).

主要的js代码:

var sortWorker = new Worker('js/contactsorter.js');
sortWorker.onmessage = function(e) {
    var messages = [];
    e.data.forEach(function(userDoc) {
        var contactSection = _drawContact(userDoc);
        messages.push(contactSection);
    });

    meta.append(messages); // this actually appends document fragment as a child
};

sortWorker.postMessage(postMessageData);
Run Code Online (Sandbox Code Playgroud)

contactsorter.js(worker):

onmessage = function(e) {
    var uid, output = [], usersStat = {};

    // calculations...

    postMessage(output);
    close();
};
Run Code Online (Sandbox Code Playgroud)

有没有办法在这个地方避免这些GC事件?

UPD:在我看来,GC事件的时间取决于发送给工人的数据量.UPD2:关闭和启动后GC事件只发生两次,从而阻止UI不到一秒钟.嗯?

javascript html5 garbage-collection javascript-events web-worker

8
推荐指数
1
解决办法
3288
查看次数

获取touchmove或touchend的当前DOM对象已结束

正如Mozilla在TouchEvent页面上所述:

事件的目标是接收与触摸点相对应的触摸启动事件的相同元素,即使触摸点已移出该元素之外.

这与mousemove和mouseup不同,其中目标实际上是鼠标所在的DOM元素.

在不使用任何库的情况下,获取我touchmove或touchend事件发生的元素的最佳方法是什么?

javascript dom javascript-events

8
推荐指数
1
解决办法
3583
查看次数

如何防止使用hammer.js触摸默认值

如果用触摸设备点击锚点我想阻止锚点点击,但是如果用鼠标点击它可以正常操作.

原因是,在桌面上,您将鼠标悬停在锚点上以查看更多信息,然后单击以查看产品.

在手机上,我希望第一次点击显示信息,第二次查看产品.

我已经尝试过以下各种变体:

$('article.product aside a.link').hammer().on('tap', function(ev) {

    if (ev.gesture.pointerType == 'touch') {
        ev.gesture.srcEvent.preventDefault();

        return false;
    }

});
Run Code Online (Sandbox Code Playgroud)

有没有人对此有任何想法?谢谢!

javascript mobile jquery javascript-events hammer.js

8
推荐指数
1
解决办法
4415
查看次数

标签切换事件可用于Google Chrome扩展程序?

作为Google Chrome扩展程序,是否可以收听制表符开关?也就是说,当Tab键切换刚刚发生时会收到通知?

(我想制作一个扩展,在全屏时,使用常用Ctrl+PageUp和Ctrl+PageDown键盘快捷键切换标签时,会提供开关和其他当前可用标签的视觉反馈.)

google-chrome javascript-events google-chrome-extension

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

pace.js:"启动"事件未触发?

我似乎无法找到解决这个问题,我在发布的评论这个问题 ......我用pace.js插件,我很想来加载我的网页/显示部分立即,而不必等待预加载加载所有内容.

我想通过简单地调用start事件并立即显示选择器来做到这一点.

但是,我似乎无法找到我的done事件被解雇的原因,但事实start并非如此.我也尝试过hide,但是stop或者restart不是.

$(window).load(function(){

    Pace.on('start', function() { 
        alert('start') // not fired
    });

    Pace.on('done', function() {
        alert('done') // fired!
    });

});
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

javascript jquery javascript-events preload pace.js

8
推荐指数
2
解决办法
6348
查看次数

在JQuery中定义全局变量

我不确定我是否正确解释这一点,但在这里......

我有一个在JQuery中工作的函数,用于将选定的下拉值分配给变量,然后在单击确认按钮时将变量传递给HTML的不同部分.

这是HTML的精简版本

<p id="t1"></p> 
<select id="selectLevel">
   <option value="1">1</option>
   <option value="2">2</option>
   <option value="3">3</option>
   <option value="4">4</option>
   <option value="5">5</option>
   <option value="6">6</option>
   <option value="7">7</option>
   <option value="8">8</option>
   <option value="9">9</option>
   <option value="10">10</option>
   <option value="11">11</option>
   <option value="12">12</option>
   <option value="13">13</option>
   <option value="14">14</option>
   <option value="15">15</option>
   <option value="16">16</option>
   <option value="17">17</option>
   <option value="18">18</option>
   <option value="19">19</option>
   <option value="20">20</option>
</select>
<span class="btn" id="confirmLevel">Confirm</span>
Run Code Online (Sandbox Code Playgroud)

这是我使用的JQuery.

$(document).ready(function() {
    $('#confirmLevel').click(function() {
        var PClevel = $("#selectLevel option:selected").text();
        $('#t1').append('Level ' + PClevel); 
    });
});
Run Code Online (Sandbox Code Playgroud)

问题是,如果我稍后尝试为其他函数调用PCLevel变量,则没有任何反应.我在这里错过了什么?或者最好完全跳过JQuery并使用Javascript来做同样的事情?

javascript variables jquery global-variables javascript-events

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

使用elm高阶函数进行键盘事件

我正在尝试创建一个更高阶的函数来创建函数来捕获特定的密钥代码.该代码的灵感来自于他的todomvc实现中的Evan的"onEnter"功能,该功能仅捕获输入功能.

onKeyCode : Int -> Msg -> Attribute Msg
onKeyCode keycode msg =
    let
        captureKey code =
            if code == keycode then
                msg
            else
                NoOp
    in
        on "keydown" (Json.map captureKey keyCode)

onEnter = onKeyCode 13
onEsc =  onKeyCode 27
Run Code Online (Sandbox Code Playgroud)

现在我想将它添加到查看器中的输入组件:

input
 [ class "edit"
 , id ("todo-" ++ toString item.uid)
 , value item.message
 , onInput (UpdateItem item.uid)
 , onBlur (SwitchEditTodo item.uid False)
 , onEnter (SwitchEditTodo item.uid False)
 , onEsc (UndoEditTodo item.uid)
 ]
[]
Run Code Online (Sandbox Code Playgroud)

如果我只有onEnter,代码将按预期工作,但如果我添加onEsc,onEnter代码永远不会执行.我在哪里做错了?是高阶函数上下文的问题还是在单独的函数中使用多个值进行"on"映射?

functional-programming javascript-events elm

8
推荐指数
1
解决办法
441
查看次数