我需要一个用于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
我在分配给body元素的网页上有一个按键处理程序.我真的希望它在网页的任何地方都是活跃的.或者我想.文本输入表单中的按键事件也会激活正文处理程序,这是有道理的,但我不想要.
理想情况下,我想将按键处理程序分配给body元素,并以某种方式排除输入表单.有什么方法可以在输入级别停止事件并防止它传播到正文?(或者甚至是查看HTML DOM事件的正确方法?)
javascript keypress javascript-events onkeypress event-propagation
我正在调用一个返回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)
任何人都可以解释为什么我的自定义事件没有传递消息数组?
使用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) 我有一个表单,其中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:解释密钥的设置位置.
它可能是睡眠剥夺,但我不明白为什么这不起作用.我希望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) 有没有办法让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方式来做这个或我自己必须这样做?
javascript jquery事件处理如果在事件上(例如'click')为父元素绑定了一个函数,为子DOM元素绑定了另一个处理函数,它们中的哪一个被调用?如果他们所有人都会按照哪个顺序打电话?谢谢!
我这样做:<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.解决办法是什么?谢谢
有一个令人讨厌的网站,通过使用<div onclick=>而不是使用箔片试图"在新标签中打开" <a href=>.我已经使用jQuery编写了一个bookmarklet,它创建了一个包装器<a>标签并将其插入<div>到其内容周围.
如何删除原始的onclick处理程序?
javascript ×10
jquery ×7
html ×3
bookmarklet ×1
closures ×1
combobox ×1
forms ×1
jquery-ui ×1
keypress ×1
mouseout ×1
onkeypress ×1