我在使用jquery/ajax表单的多个表单提交时遇到了一些问题.我通过在我的服务器上打印表单提交的每个实例找到了这个,并看到一个表单将正确提交一次,然后再次多次提交.
为了清楚起见,此代码在第一次提交时100%正确工作,但是当我单击表格中的另一行,并创建一个新对话框/提交它时,它最终会多次提交.
我认为它与事件绑定有关,但我无法修复它.任何见解或帮助将不胜感激.
按钮的id是"save-flag-button"
// When someone clicks on the flag column in my table, a dialog pops up //
// on the condition that a flag does not exist. //
$(function() {
$('.flag').click(function() {
var cellId = "flag" + String(this.getAttribute("data-client-rel"));
if (this.getAttribute("data-flag-exists") == '0') {
// create dialog
var dialog = flagDialog('Create Flag');
// Making the form ajax
$("form", dialog).ajaxForm(function(success, data) {
if (success) {
$("#" + cellId).attr("data-flag-exists", '1');
$("#" + cellId).attr("data-flag-content", data["flag_state"]);
$("#" + cellId).text(data["flag_state"]);
$("#flag-dialog").dialog("close");
} else …Run Code Online (Sandbox Code Playgroud) 我想在ckeditor中的keydown事件上获取keyCode.我的代码看起来有点像这样
editor.document.on( 'keydown', function(event) {
var keycode= event.data.keyCode & ~(CKEDITOR.SHIFT | CKEDITOR.CTRL |CKEDITOR.ALT);
alert('Key:'+keycode);
});
Run Code Online (Sandbox Code Playgroud)
但它总是警告0.不知道为什么会如此.?
另外我想使用来自Jquery的event.preventDefault().但我无法弄清楚如何在我的plugin.js文件中包含jquery库.任何建议
我正在尝试在具有click事件的DIV块内部实现链接.
如果用户点击链接,我希望外部DIV点击事件不会运行.
我的链接看起来像:
<a href="javascript: openVideo('videoID', this, event); " >Watch the video</a>
Run Code Online (Sandbox Code Playgroud)
和javascript看起来像:
function openVideo(video, object, event) {
$(object).html($(object).html()+"<iframe width='360' height='315' src='http://www.youtube.com/embed/"+video+"' frameborder='0' allowfullscreen></iframe>");
event.stopPropagation();
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我点击链接时,它会执行外部DIV代码.并显示与stopPropogation方法相关的错误:
Uncaught TypeError: Cannot call method 'stopPropagation' of undefined
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?
我有一个2D游戏的开始 - 玩家可以使用箭头键在屏幕上驱动三角形.
问题在于,有时三角形将在一个方向上旋转或向前移动,直到再次按下相应的控制键并再次触发onkeyup事件.这通常发生在同时按下多个控制键的情况下.
我无法理解为什么它会被困在第一位,除非onkeyup事件因某些原因没有被解雇.非常感谢任何帮助,谢谢.
这里有一些代码,你可以在JSFiddle上找到一个完整的例子:
...
function init(){
var canvas = document.getElementById('canvas');
if(canvas.getContext){
setInterval(play, 50);
}
}
function play(){
printTriState();
updateTriAcceleration();
applyTriVelocity();
updateTriRotation();
draw();
}
document.onkeydown = function(event){
if(!event.keyCode){
keycode = window.event.keyCode;
} else {
keycode = event.keyCode;
}
console.log(event.keyCode);
switch(keycode){
//left
case 37:
tri.rotation = -1;
break;
//up
case 38:
tri.throttle = true;
break;
//right
case 39:
tri.rotation = 1;
break;
//down
case 40:
tri.currentSpeed = 0;
break;
default:
break;
}
};
document.onkeyup = …Run Code Online (Sandbox Code Playgroud) 关于JavaScript事件对象的快速问题 - 当我尝试将事件变量传递给函数时,JavaScript如何知道?例如,当我定义一个onclick处理程序时,如下所示:
<button onclick='SendMessage(event)'></button>
Run Code Online (Sandbox Code Playgroud)
JavaScript是否因为我将其命名为"event"而传递了事件变量?如果是这样,为了传递事件变量,它保留了哪些其他变量名?(e?ev?等..)
如果是这种情况,可以通过命名本地或全局变量"event","e"等来涵盖它们吗?
提前感谢您满足我的好奇心!
javascript parameter-passing event-handling javascript-events
我正在创建一个CoffeeScript应用程序,它使用canvas元素覆盖网络摄像头视频(这仅用于上下文,但似乎与我的问题无关).为了获得适当的画布大小覆盖在视频上,我将事件处理函数附加到loadedmetadata事件,如下所示:
WebcamWizard.prototype.initializeUserMedia = function(stream) {
// ...
video = document.getElementById('webcam');
video.addEventListener('loadedmetadata', function(e) {
// ...
v = e.srcElement;
// ...
});
// ...
}
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,我在这种情况下的偏好是在这个特定类的不同方法中定义这个处理程序方法,如下所示:
WebcamWizard.prototype.initializeUserMedia = function(stream) {
// ...
video = document.getElementById('webcam');
video.addEventListener('loadedmetadata', this.initializeCanvas);
// ...
}
WebcamWizard.prototype.initializeCanvas = function(e) {
// ...
video = e.srcElement;
// ...
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢这个的原因是因为它使CoffeeScript看起来更整洁,并允许我更容易地访问我正在工作的类中的canvas DOM对象.然而,当我做第二个时,initializeCanvas似乎没有调用该方法.控制台上也没有报告错误.这是为什么?
奇怪的是,以这种方式调用方法似乎在同一文件中以完全相同的方式工作.
我有一个表单,在提交时,通过通常的e.preventDefault()并发送一个ajax请求.但是,如果此ajax请求返回某个条件,我希望正常提交表单.我该如何实现这一目标?
// Submit handler
$(".reserveer_form").submit(function(event){
event.preventDefault();
$.ajax({
url: $(this).attr("action"),
data: $(this).serialize(),
success: function(data) {
if($(".messagered",data).length > 0){
var errors = $(".messagered",data);
$(".gegevens").before(errors);
} else {
// SUBMIT THE FORM!
}
}
});
})
Run Code Online (Sandbox Code Playgroud) 我有一个包含的表格
<button class="submit">Submit</button>
Run Code Online (Sandbox Code Playgroud)
和jQuery代码
$(".submit").click(function(e){
var evt = e || window.event; // IE compatibility
if(evt.preventDefault){
evt.preventDefault();
}else{
evt.returnValue = false;
evt.cancelBubble=true;
}
//....ajax call
});
Run Code Online (Sandbox Code Playgroud)
所以,我想知道我在IE7中做错了什么,当我输入搜索词然后按Enter键进入我的主页(action in form ="/").为什么它不会阻止IE7进入默认操作.
附加说明:
谢谢病毒
假设我有foo().有没有办法在foo()之后执行bar()而不修改foo()?
foo(){ /* logic */}
bar(){ /* more logic *}
afterEvent1AlwaysExecute2(foo,bar);
Run Code Online (Sandbox Code Playgroud)
谢谢!任何非jquery或jquery评论赞赏:)
我最近开始搞乱Javascript,可以在我的工作中看到动画结束监听器的一些不错的应用程序.我有以下代码,我的动画结尾的听众都没有被解雇.任何人都可以看到为什么两个听众中的任何一个都不工作?我正在寻找Chrome.
http://jsfiddle.net/spacebeers/jkUyT/1/
谢谢.
#animationTest {
width: 150px;
text-align: center;
display: block;
padding: 20px;
background: #000;
color: #fff;
border-bottom: 10px solid red;
cursor: pointer;
transition: border-bottom 0.5s linear; /* vendorless fallback */
-o-transition: border-bottom 0.5s linear; /* opera */
-ms-transition: border-bottom 0.5s linear; /* IE 10 */
-moz-transition: border-bottom 0.5s linear; /* Firefox */
-webkit-transition: border-bottom 0.5s linear; /*safari and chrome */
}
#animationTest:hover {
border-bottom: 10px solid blue;
}
<a id="animationTest">Hover over me</a>
$('document').ready(function(){
var animationTest = document.getElementById('animationTest');
animationTest.addEventListener('webkitAnimationEnd', function(event){ …Run Code Online (Sandbox Code Playgroud) javascript ×10
jquery ×4
ajax ×1
ckeditor ×1
coffeescript ×1
css3 ×1
listener ×1
onkeydown ×1
onkeyup ×1