在我的网页中,js 应用程序正在更改输入的值,但我想要的是在值更改时触发事件。
问题是,当应用程序更改值时,不会触发任何事件,因为值是由 js 更改的,但如果用户输入值,则会触发事件。
这是一个小例子,当您单击 时change button,值会更改,但.change事件不会触发。
如果您手动输入值,.change则会触发。
var i = 0;
$("#id_st").change(function(){
console.log('This is value',$(this).val())
$('#p').html($(this).val());
});
$('#change_btn').click(function(){
i = i+1;
$("#id_st").val(i);
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="id_st" type="text" name="st" value="0">
<br>
<button id="change_btn" type="button" name="button">change value</button>
<br>
<p id="p">value</p>Run Code Online (Sandbox Code Playgroud)
我搜索了我的问题并发现,.trigger('change')但正如我已经告诉过你的那样,该值是由我尚未开发的应用程序更改的,因此无法使用此方法。
请告诉我一个真正解决我的问题的方法。
当按下回车键时,我总是编写以下代码来处理:
$("#selectorid").keypress(function (e) {
if (e.keyCode == 13) {
var targetType = e.originalTarget
? e.originalTarget.type.toLowerCase()
: e.srcElement.tagName.toLowerCase();
if (targetType != "textarea") {
e.preventDefault();
e.stopPropagation();
// code to handler enter key pressed
}
}
});
Run Code Online (Sandbox Code Playgroud)
有没有办法扩展jQuery,以便我可以写:
$("#selectorid").enterKeyPress(fn);
Run Code Online (Sandbox Code Playgroud) 我有一个插件,应该在更新"选择器"的值时触发.在正常的UI交互过程中,它就像一个冠军.但是,如果通过JavaScript或jQuery更新"选择器",则不会触发.
插件的一般想法是自动舍入网格和面板等内容.
任何帮助都会很棒......我一整天都在努力!
给出以下HTML:
<input id="myDecimalTotal" type="text" value="0.00" class="rounder-decimal" />
<input id="btnDecimalTotalTest" type="button" value="Run Total" />
Run Code Online (Sandbox Code Playgroud)
使用以下选择器和JavaScript进行测试:
jQuery(document).ready(function() {
jQuery('input.rounder-decimal').numericRounder();
jQuery('#btnDecimalTotalTest').click(overwriteDecimalTotal); // fails
jQuery('#myDecimalTotal').val(777); // fails
});
function overwriteDecimalTotal() {
jQuery('#myDecimalTotal').val(123);
}
Run Code Online (Sandbox Code Playgroud)
对于以下插件:
(function($) {
$.fn.numericRounder = function(options) {
switch (typeof (options)) {
case 'object':
options = $.extend({}, $.fn.numericRounder.defaults, options);
break;
case 'string':
options = $.extend({}, $.fn.numericRounder.defaults, { onEvent: options });
break;
default:
options = $.fn.numericRounder.defaults;
}
return …Run Code Online (Sandbox Code Playgroud) 我正在尝试将一段代码更新为新的jquery on()方法.我有一张桌子和一个选择框.我想为每个表头单元格填充一个选项的选择框,这可以正常工作.
然后我想根据选择的选项切换标题单元格.这适用于桌面和Android,但不适用于iPad.
这就是我正在做的事情:
$('table th').each(function(i) {
// add option to select box for each table column
var toggle = $('<option value="'+id+'">'+th.text()+'</option>');
$('select#toggle').append(toggle); }
// set up options
$('select#toggle').one("updateCheck", function(){
console.log("th-setup");
// if condition, then select, otherwise don't select
}).trigger("updateCheck");
});
// listen for select changes
$('select#toggle').on('change', function() {
console.log("change detected");
})
Run Code Online (Sandbox Code Playgroud)
HTML
<select id="toggle"></select>
<table class="sample">
<thead>
<tr>
<th>one</th>
<th>two</th>
<th>three</th>
<th>four</th>
</tr>
</thead>
</table>
Run Code Online (Sandbox Code Playgroud)
我首先尝试将以下代码绑定到文档,如下所示:
$(document).on('change',$('select#toggle'), function(...)
Run Code Online (Sandbox Code Playgroud)
但这只是在页面显示之前崩溃我的iPad.
有人可以告诉我,如果我做错了什么,为什么选择一个选项不会触发iPad上的更改事件而不是在Android和桌面上触发一个?
谢谢你的提示!
javascript jquery event-handling jquery-mobile jquery-events
我有一个页面,向左滑动将显示下一页(不同的URL),在下一页上,向右滑动将返回上一页.代码第一次很漂亮.但是,下一次它不起作用!如果我手动刷新页面,它会再次开始工作......所以它必须是初始化问题.我相信你们中的一些人肯定在某个时候遇到过这个问题.对于那些拥有的人,我想问你 - 实现这样一个功能的正确方法是什么?
我正在使用jwerty插件来处理键盘事件,我创建了一个组合:"alt + a".
它运作良好,事件发生.但窗户的叮当!声音即将来临.这太烦人了.
怎么能预防呢?
这是链接,自己听听:http://jsfiddle.net/YShy9/3/
我不确定如何解决这个问题.
我在HTML中创建了一些按钮,并添加了一些数据属性.这些按钮有一个roleBtn调用我的jQuery roleBtnClicked函数的类,并在HTML的数据属性中获取变量.
$(".roleBtn").click(roleBtnClicked);
function roleBtnClicked(event){
reg.roleName = $(this).html(); /* Get role name: Actor */
reg.blueBtn = $(this).data('blue'); /* Get blue-btn-1 */
reg.the_Num = $(this).data('num'); /* Get the number */
reg.modal_ID = $(this).data('modal'); /* Get modal-1 */
Run Code Online (Sandbox Code Playgroud)
现在使用这些信息,roleBtn点击后会出现一个模态窗口,然后我doneButton会关闭模态窗口并使用数据属性中的变量然后动态生成新的HTML.这个新的HTML将包含一个类的按钮blueBtn.
我的问题是我的点击功能blueBtn不适用于即时创建的蓝色按钮.它可以在已经拥有该类的div上工作blueBtn,但如果它是在运行中创建的则不起作用.
你知道解决方法吗?还是我错过了一些简单的东西?
doneButton单击后,我有另一个函数创建新的HTML,包括动态的blueBtns:
$('.selected_row .choices-col-left').append('<div class="blueBtn-holder" id="blueBtnHolder-'+theNum+'"><div class="blueBtn" id="'+blueBtn+'" row="'+rowName+'" modal="'+modal_ID+'" num="'+theNum+'">'+roleName+'</div></div>');
Run Code Online (Sandbox Code Playgroud)
我的蓝色按钮单击功能不起作用
$(".blueBtn").click(blueBtnClicked);
function blueBtnClicked(event){
alert("Where are you blueBtn on the fly?");
console.log("Where are you blueBtn on …Run Code Online (Sandbox Code Playgroud) 我有一个选定的公司列表,如下所示:
<div id="selected_companies">
<div class="company">
<a>
<div class="delete_company"></div>
Company One
</a>
</div>
<div class="company">
<a>
<div class="delete_company"></div>
Company Two
</a>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我希望在点击其中一家公司时将每个.companydiv "移动" 到一个单独的#deleted_companiesdiv中.我用jQuery做这个:
$('#selected_companies .company a').on('click', function (e) {
/* Getting the company */
var company_id = $(this).prev().prop('value');
$('.form').append('<input type="hidden" name="deleted_companies[]" value="'+ company_id +'" />');
var parent = $(this).parent();
parent.appendTo('#deleted_companies');
$('#deleted_companies').slideDown(300);
});
Run Code Online (Sandbox Code Playgroud)
当我点击其中一个公司时,.companydiv移动到所需的div(#deleted_companies),但是当我尝试在该div中达到它时,它没有按预期执行.例如,此代码不起作用:
$('#deleted_companies .company a').on('click', function (e) {
alert('This should work.');
});
Run Code Online (Sandbox Code Playgroud)
那么如何使该警报工作?
javascript jquery dom-manipulation jquery-selectors jquery-events
在单击事件后激活滚动侦听器的正确方法是什么?
我目前正在使用:
$('.button').click(function (event) {
$(window).on("scroll", someFunction);
}
someFunction = function() {
//do stuff
$(window).off("scroll"); //disable scroll listener
}
Run Code Online (Sandbox Code Playgroud)
在单击事件上,我启用了运行someFunction的滚动侦听器.该函数完成后填充并禁用滚动侦听器.单击时再次启用滚动侦听器.
我担心的是我做得不对.请指教!
注意:滚动侦听器无法无限期运行.它从点击开始,必须在myFunction结束时完成.
注意:我不会尝试检测用户何时停止滚动..
我有几个带有ajax加载内容的表.有时我必须td在将其导出为PDF之前手动更改内容,因此我认为最好的方法是td使用jQuery双击创建每个内容的触发器.dblclick().触发器将打开一个带有input字段的模态,并td在提交模态时更改双击的文本.
这是有效的,但是当我更改第二个,第三个等的内容时td,之前单击的每个内容td都会获得新值.
检查我的小提琴:https://jsfiddle.net/fvoufq07/
我的代码到目前为止:
$( ".sitename" ).dblclick( function() {
var sitename = $( this );
$( "#msgBox .modal-title" ).html("Change sitename");
$( "#msgBox .modal-body" ).html("Enter new sitename:<input type=\"text\" id=\"new_sitename\">");
$( "#msgBox" ).modal("show");
$( "#msgBox button.btn" ).click( function() {
sitename.text( $( "#new_sitename" ).val().trim() );
});
});
Run Code Online (Sandbox Code Playgroud)