标签: jquery-events

如果通过js更改值,则不会触发.change

在我的网页中,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')但正如我已经告诉过你的那样,该值是由我尚未开发的应用程序更改的,因此无法使用此方法。

请告诉我一个真正解决我的问题的方法。

html javascript jquery jquery-events

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

有没有办法扩展jQuery来处理自定义输入键事件?

当按下回车键时,我总是编写以下代码来处理:

$("#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)

javascript jquery jquery-plugins jquery-events

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

为什么更改事件不会在selector.val(1234)上触发?

可能重复:
jQuery textbox.val('xxxx')没有导致更改为fire?

我有一个插件,应该在更新"选择器"的值时触发.在正常的UI交互过程中,它就像一个冠军.但是,如果通过JavaScript或jQuery更新"选择器",则不会触发.

  • 直接通过文本框更新... 它的工作原理.
  • 按下按钮...... 它失败了.
  • 使用对selected.val(xxx)的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)

javascript jquery jquery-plugins jquery-events

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

为什么新的jquery on('change')不会在iOS上启动,而它适用于Android?

我正在尝试将一段代码更新为新的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

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

jquery mobile:"swipeleft"和"swiperight"只能工作一次

我有一个页面,向左滑动将显示下一页(不同的URL),在下一页上,向右滑动将返回上一页.代码第一次很漂亮.但是,下一次它不起作用!如果我手动刷新页面,它会再次开始工作......所以它必须是初始化问题.我相信你们中的一些人肯定在某个时候遇到过这个问题.对于那些拥有的人,我想问你 - 实现这样一个功能的正确方法是什么?

jquery-mobile jquery-events

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

如何用javascript防止浏览器声音

我正在使用jwerty插件来处理键盘事件,我创建了一个组合:"alt + a".

它运作良好,事件发生.但窗户的叮当!声音即将来临.这太烦人了.

怎么能预防呢?

这是链接,自己听听:http://jsfiddle.net/YShy9/3/

html javascript jquery jquery-plugins jquery-events

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

单击函数不能在动态创建的div类上工作

我不确定如何解决这个问题.

我在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)

html javascript jquery click jquery-events

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

修改DOM后,jQuery选择器无法正常工作

我有一个选定的公司列表,如下所示:

<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

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

单击事件后滚动侦听器上的jQuery

在单击事件后激活滚动侦听器的正确方法是什么?

我目前正在使用:

$('.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结束时完成.

注意:我不会尝试检测用户何时停止滚动..

javascript jquery jquery-events

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

jQuery:双击为表设置文本

我有几个带有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)

javascript jquery jquery-events

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