标签: javascript-events

当文本框更改时,如何将javascript事件处理程序绑定到Ajax Control Toolkit组合框

我需要一个用于ASP.NET项目的组合框,所以我决定使用Ajax Control Toolkit组合框(http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ComboBox/ComboBox.aspx).

我不想使用回发,因为我不想重新加载页面,但我需要知道文本框中的文本何时更改,以便我可以调用服务器来保留新的列表项.

我很好奇如何将onchange或onblur事件绑定到此组合框使用的输入框.

这是我的asp.net页面:

<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>

<cc1:ComboBox ID="PlantDropDown" runat="server" OnInit="PlantDropDown_Init" DropDownStyle="DropDown" 
             AutoCompleteMode="SuggestAppend" 
            ItemInsertLocation="OrdinalText" AutoPostBack="false">


                </cc1:ComboBox>
Run Code Online (Sandbox Code Playgroud)

更新:我尝试使用该建议,我收到此错误:

$find("PlantDropDown") is null
[Break on this error] $find('PlantDropDown').add_propertyChanged(function(sender, e) {\r\n
Run Code Online (Sandbox Code Playgroud)

我在javascript方面使用jQuery,顺便说一句,如果有帮助的话.

最后更新:感谢crescentfresh的帮助,我得到了它的工作,最后我在.aspx文件中有这个:

    <input type="hidden" id="PlantDropDownID" value="<%= PlantDropDown.ClientID %>" />
Run Code Online (Sandbox Code Playgroud)

这是在我的javascript文件中,因为我不在我的.aspx文件中推送javascript:

elem = document.getElementById('PlantDropDownID');
$find(elem.value).add_propertyChanged(function(sender, e) {
    if (e.get_propertyName() == 'selectedIndex') {
        var newValue = sender.get_textBoxControl().value;
    }
})
Run Code Online (Sandbox Code Playgroud)

javascript jquery combobox ajaxcontroltoolkit javascript-events

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

从分配给body的按键处理程序中排除表单字段

我在分配给body元素的网页上有一个按键处理程序.我真的希望它在网页的任何地方都是活跃的.或者我想.文本输入表单中的按键事件也会激活正文处理程序,这是有道理的,但我不想要.

理想情况下,我想将按键处理程序分配给body元素,并以某种方式排除输入表单.有什么方法可以在输入级别停止事件并防止它传播到正文?(或者甚至是查看HTML DOM事件的正确方法?)

javascript keypress javascript-events onkeypress event-propagation

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

在触发器上传递json数据

我正在调用一个返回json数据的服务.

脚本:

$.ajax({
    type: "POST",
    url: "/some/service",
    dataType: "json",
    success: function(response) {
        if (response.status == "ok" && response.messages.length > 0) {

            // obj is a jQuery object
            obj.trigger(SOME_EVENT, response.messages);

        }
    }
});
Run Code Online (Sandbox Code Playgroud)

这是响应示例:

{
  "status":"ok",
  "messages":[
     {"id":1,"message_text":"latihan"},
     {"id":123,"message_text":"hello"}]
}
Run Code Online (Sandbox Code Playgroud)

当obj收到SOME_EVENT触发器时,我希望它传递下面的消息数据:

[{"id":1,"message_text":"latihan"},
 {"id":123,"message_text":"hello"}]
Run Code Online (Sandbox Code Playgroud)

但是当我将消息参数打印到控制台时,

// on receiving messages
obj.bind(SOME_EVENT, function(sender, messages) {
    console.log(messages);
});
Run Code Online (Sandbox Code Playgroud)

结果,它只通过了下面的最后一条消息

{"id":123,"message_text":"hello"}
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么我的自定义事件没有传递消息数组?

javascript jquery javascript-events

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

使用jQuery,在元素上设置Draggable可以防止在单击可拖动元素时触发模糊

使用jQuery,当您在文本框上设置模糊事件并将另一个元素设置为可拖动时,单击可拖动元素时,模糊事件不会在FireFox中触发.IE有点好,你得到模糊事件,但你没有得到可拖动元素上的click事件.

如果你没有在draggable构造函数中指定cancel:"",你将触发blur事件,但是你想要拖动的元素是不可拖动的.

jQuery v1.3.2 jQuery UI v1.7.2

console.log行适用于FireFox的FireBug插件.

<HTML> 
    <HEAD> 
        <TITLE>Blur/Click Workbench</TITLE> 
        <script src="js/jquery.js" type="text/javascript" ></script>
        <script src="js/ui/ui.core.js" type="text/javascript"></script>
        <script src="js/ui/ui.draggable.js" type="text/javascript"></script>
        <script type="text/javascript"> 
function blurring() {
    console.log('1 - blurring - ' + $( this ).attr('id'));
}

function clicking() {
    console.log('2 - clicking - ' + $( this ).attr('id'));
}

$(document).ready(function() {
    $( ".draggableTool" ).draggable( { cancel: "" } );

    $( '.property' ).blur( blurring );
    $( '#labelContainer' ).click( clicking );
});
        </script>
    </HEAD>
    <BODY>
        <input type='text' class='property' id='tb1' />
        <br …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery jquery-ui javascript-events

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

可以阻止Enter从仅从某些输入字段在Javascript中提交表单

我有一个表单,其中onkeyup触发为某些字段创建建议框.我可以捕获向上箭头,向下箭头和转义的击键,并相应地使用它们在建议框中移动或关闭它.我想使用enter将他们的选择移动到触发建议的输入字段.但是,我似乎无法捕获输入击键.

控件永远不会进入我的javascript建议功能.相反,表格只是提交.我已经尝试了在输入时返回false的noEnter函数传递给onkeypress和onkeydown用于有问题的输入元素,没有骰子.该表单似乎从所有输入事件处理程序中获取控制权,并在其中任何一个可以执行任何操作之前提交自身.

表单提交是否覆盖字段中的所有其他事件处理程序,或者此处还有其他内容吗?如果确实如此,那有什么办法吗?

这是有问题的元素(删除了一些值):

<input type="text" name="myInput" id="myInputField" size="22" onkeypress="noEnter(event)" onkeyup="suggest(event)" onblur="hideSuggestions()">
Run Code Online (Sandbox Code Playgroud)

这是javascript来捕捉它:

    var evnt = (event ? event : window.event);

    var key = evnt.keyCode;

    if(key == 13) { // Handle Enter
        alert("ENTER PRESSED.");
        hideSuggestions();
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

警报永远不会触发.放在函数顶部的警报也不会触发.但是,对于转义键,当我将完全相同的代码放入if检查key == 27警报时.

关于几乎相同的主题还有其他问题,例如:阻止用户通过输入#2来提交表单

但是,我没有使用jquery,我只想阻止enter提交这个字段.但是,各种问题中提到的其他解决方案似乎都不起作用.

EDITTED:解释密钥的设置位置.

html javascript forms javascript-events

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

我在这个简单的Closure上做错了什么

它可能是睡眠剥夺,但我不明白为什么这不起作用.我希望onclick从创建元素的for循环返回i的值并应用事件处理程序.把它放在一个闭包中,它仍然是转动迭代器的最大数量.

window.onload = function(){
  var arbitrary_amount = 100;
  var the_list = document.getElementsByTagName('ul')[0];

  for(var i = 0; i < arbitrary_amount; i++){
    var natural_index = i + 1;
    var list_item = document.createElement('li');
    var inner_link = document.createElement('a');
    inner_link.setAttribute('href', '#');
    inner_link.innerHTML = "Link "+natural_index;

    inner_link.onclick = function(){
      return function(link_num){
        alert('You clicked link '+link_num);
      }(i);
    };

    list_item.appendChild(inner_link);
    the_list.appendChild(list_item);
  }


};
Run Code Online (Sandbox Code Playgroud)

javascript closures javascript-events

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

Jquery - 延迟mouseout事件

有没有办法让jquery在mouseout事件被触发之前等待一段时间?

目前它发射太早了,我宁愿在评估鼠标之前等待500ms.我在下面使用的代码示例.

$('.under-construction',this).bind({
    mousemove: function(e) {
        setToolTipPosition(this,e);
        css({'cursor' : 'crosshair' });
    },
    mouseover: function() {
        $c('show!');
        showUnderConstruction();
    },
    mouseout: function() {
        $c('hide!');
        hideUnderConstruction();
    },
    click: function() {
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

有没有jquery方式来做这个或我自己必须这样做?

html javascript jquery javascript-events mouseout

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

事件处理订单

javascript jquery事件处理如果在事件上(例如'click')为父元素绑定了一个函数,为子DOM元素绑定了另一个处理函数,它们中的哪一个被调用?如果他们所有人都会按照哪个顺序打电话?谢谢!

javascript jquery javascript-events event-bubbling

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

div点击调用函数

我这样做:<div onclick='alert("xxx")'>Click me!</div>我看到那个警报,但我想调用onclick里面的功能.我正在尝试这个,但它不起作用.

  function GetContent(prm){
    alert(prm);
  }

  <div onclick='GetContent("xxx")'>Click me!</div>
Run Code Online (Sandbox Code Playgroud)

我需要调用该函数内联而不是为该div分配id或类并使用jquery.解决办法是什么?谢谢

javascript jquery javascript-events

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

如何使用书签删除内联onclick属性?

有一个令人讨厌的网站,通过使用<div onclick=>而不是使用箔片试图"在新标签中打开" <a href=>.我已经使用jQuery编写了一个bookmarklet,它创建了一个包装器<a>标签并将其插入<div>到其内容周围.

如何删除原始的onclick处理程序?

javascript jquery bookmarklet javascript-events

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